JavaScript 扩展代码

更具需要写的几个扩展。

扩展核心自执行函数 Object.extend

/**
* 对象扩展体 参数是 {属性|方法:属性值|方法体}
* 只执行实现
*
* 实例对基础对象 进行新加一个alert_方法 实现弹出当前的对象 对数组。以及string都有效
* 实例 Object.extend({alert_:function(){alert(this)}});
* @type {Function}
*/
(Object.extend = Object.prototype.extend = function(){
var args =arguments, length = args.length,i= 0,$key;
for(;i<length;i++){
for(var name in ($key = args[i])){
this.prototype[name] = $key[name];
}
}
})();
/**
* 判断对象是否是函数
* */
Object.extend({isFunc:function(){return this instanceof Function}}); /**
* 判断指定的值是都是函数
*/
function isFunc(obj){
return obj instanceof Function;
} /**
* 数组扩展
*/
Array.extend({
/**
* 根据value 返回数组的下一个单元 给定的单元是最后一个的话。将返回false
* @returns {*}
*/
next: function(value){
var i = false;
for(var key in this){
if(isFunc(this[key])) continue;
if(i){ return this[key]; }
else if(this[key]==value) i = !0;
}
return i;
},
/**
* 根据value 返回数组的上一个单元 给定的单元是第一个的话。将返回false
* @returns {*}
*/
prev : function(value){
var prevVal = false;
for(var key in this){
if(isFunc(this[key])) continue;
if(this[key] == value) return prevVal;
else prevVal = this[key];
}
return prevVal;
},
/**
* 返回数组的keys
* @returns {Array}
*/
keys : function(){
var newArray = [],k= 0;
for(var i in this){
if(isFunc(this[i])) continue;
newArray[k++] = i;
}
return newArray;
},
/**
* 返回数组的values
* @returns {Array}
*/
values : function(){
var newArray = new Array(),k=0;
for(var i in this){
if(isFunc(this[i])) continue;
newArray[k++] = this[i];
}
return newArray;
}
}); /**
* 字符串扩展
*/
String.extend({
/**
* 根据字符转取得 img 标签的属性 默认获取 img 的src属性值
* @returns {Array}
* @constructor
*/
getImgAttr:function(){
var reg = /<img[^>]+src="[^"]+"[^>]*>/gi,result = this.match(reg),imgSrc = [],attr = arguments[0] || "src", reg2 = new RegExp(attr+'="([^"]+)"','g');
for (var i=0; i<result.length; i++) {
reg2.exec(result),imgSrc[i] = RegExp.$1;
}
return imgSrc;
}
}); var string = '<p><br /><a target="_blank" href="/html/news/uploadfiles/131011/201310110928071827.jpg"><img alt="" src="/html/news/uploadfiles/131011/201310110928071827.jpg" /></a><br /></p></div><div class="ListImgBox"><p><br /><a target="_blank" href="/html/news/uploadfiles/131011/201310110923007763.jpg"><img alt="" src="/html/news/uploadfiles/131011/201310110923007763.jpg" />';
alert(string.getImgAttr());

  

JavaScript 对象扩展代码的更多相关文章

  1. Javascript对象、Jquery扩展简单应用

    Javascript对象,表现方式一: person = new Object(); person.firstname = "An"; person.lastname = &quo ...

  2. Ext JS学习第九天 Ext基础之 扩展原生的javascript对象

    此文来记录学习笔记: •Ext对于原生的javascript对象进行了一系列的扩展,我们把他们掌握好,更能深刻的体会Ext的架构,从而对我们的web开发更好的服务, 源码位置,我们可以从开发包的这个位 ...

  3. Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)

    此文来记录学习笔记: 今天继续说Ext.Array,Ext.Function,Ext.Date,Ext.Error ------------------------------------------ ...

  4. 深入理解javascript对象系列第二篇——属性操作

    × 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...

  5. web前端学习(二) javascript对象和原型继承

    目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...

  6. Javascript 语言精粹 代码片段合集

    Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...

  7. 第六章:Javascript对象

    对象是javascript的基本数据类型.对象是一种复合值.它将很多值(原始值 或者其他对象)聚合在一起.可通过名字访问这些值.对象也可以看做是属性的无序集合,每个属性都有一个名/值.属性名是字符串, ...

  8. JavaScript对象进阶

    要了解JavaScript对象,我们可以从对象创建.属性操作.对象方法这几个方面入手.概括起来,包括以下几模块: 1.创建对象 1.1 对象直接量 对象直接量是创建对象最简单的方式,由若干名/值对组成 ...

  9. 深入学习JavaScript对象

    JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始 ...

随机推荐

  1. JQ选择器

    jQuery 的选择器可谓之强大无比,这里简单地总结一下常用的元素查找方法 $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个 ...

  2. es3中使用es6/7的字符串扩展

    最近在看阮一峰的<ES6标准入门>,在字符串扩展一节中有提到几个新的扩展,觉得挺有意思,想在ES3里面使用,于是就有下面的兼容性写法. repeat 将一个字符串重复n次 String.p ...

  3. 使用Python脚本获取指定格式文件列表的方法

    在Python环境下获取指定后缀文件列表的方式. 来源stackoverflow 这里简单以*.txt的作为例子. 使用glob(推荐) import glob, os os.chdir(" ...

  4. windows内存管理方式以及优缺点

    Windows内存管理方式:页式管理,段式管理,段页式管理 页式管理 将各进程的虚拟空间(逻辑地址)划分为若干个长度相等的页,业内管理把内存空间(物理内存)按照页的大小划分为片或者页面,从而实现了离散 ...

  5. COB Epoxy灌膠時氣泡產生的原因與解決方法

    COB的黑膠 (Epoxy)有氣泡通常是不被允許的,因為外部氣孔不但會影響到外觀,內部氣孔更有可能會破壞 Wire bonding 的鋁線穩定度.既使在COB製程剛完成的時候沒有通過功能測試,也不代表 ...

  6. linux之SQL语句简明教程---LIKE

    LIKE 是另一个在 WHERE 子句中会用到的指令.基本上,LIKE 能让我们依据一个套式 (pattern) 来找出我们要的资料.相对来说,在运用 IN 的时候,我们完全地知道我们需要的条件:在运 ...

  7. 商人过河问题(二)java实现

    本文实现的java版商人过河是参考http://wenku.baidu.com/link?url=dpe2AC8mCjpGnclFv6iZy88_vqYm3bED4QDpSkAI4ssgs7Bhntu ...

  8. 【每日一MOS】-RAC and Sequences (853652.1)

    序列有四种组合: a. CACHE + NOORDER b. CACHE + ORDER c. NOCACHE + NOORDER d. NOCACHE + ORDER 即使在单例配置下,当有大量的s ...

  9. C#基础:委托 【转】

    委托是C#中最为常见的内容.与类.枚举.结构.接口一样,委托也是一种类型.类是对象的抽象,而委托则可以看成是函数的抽象.一个委托代表了具有相同参数列表和返回值的所有函数.比如: delegate in ...

  10. Android UI 使用HTML布局(直接打开server网页)

    非常多时候我们用HTML布局会更方便直接,记录一下. 我如今主要是直接调用server的网页(实际上是jsp的,仅仅是返回的是html).所以须要联网,第一步加入权限. <uses-permis ...