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. JavaScript模块化开发&&模块规范

    在做项目的过程中通常会有一些可复用的通用性功能,之前的做法是把这个功能抽取出来独立为一个函数统一放到commonFunctions.js里面(捂脸),实现类似于snippets的代码片段收集. fun ...

  2. Windows Server 2008 R2 IIS重装

    背景描述: 在一个刚睡醒午觉后的下午,忽然收到客户反馈,说昨天开始应用特别卡,各种卡各种不好用,忽然想到上次说要优化服务器IIS配置还一直没弄,然后迷迷糊糊的就开始进行客户现场服务器IIS配置优化,涉 ...

  3. sql 事务和回滚

    (1) set ANSI_NULLS ON --见图1 set QUOTED_IDENTIFIER ON go ALTER proc [dbo].[procname] as begin begin t ...

  4. hdu2206IP的计算

    Problem Description 在网络课程上,我学到了很多有关IP的知识.IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方 ...

  5. java.io.IOException: open failed: ENOENT (No such file or directory)open failed: EISDIR (Is a directory)

    这一类的错误,原因一般有两点: 1.没有给相应读写文件权限 2.给了权限,但是文件的路径写的不对,比如少了“/”,这样就会报错了. Caused by: android.system.ErrnoExc ...

  6. Flask把变量注册到模板中

    使用python的Flask框架时,参考<Flask Web开发>一书时,发现书中可以在全局使用Permission.FOLLOW变量. 但是自己在尝试是,确提示变量没有定义.经过搜索,找 ...

  7. python基础教程第5章——条件循环和其他语句

    1.语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语句.在代码前放置空格来缩进语句即可穿件语句块.块中的每行都应该缩进同样的量.在Phyton中冒号(:)用来标识语句块的开始,块中 ...

  8. jquery multiselect控件

    http://www.erichynds.com/blog/jquery-ui-multiselect-widget

  9. ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小 错误分析

    目录(?)[+] 1. 问题起因 最近在进行Oracle的一些操作时,总会遇到这个错误:  ORA-06502: PL/SQL: 数字或值错误 :  字符串缓冲区太小,错误如下: ORA-00604: ...

  10. 【HDU 4463 Outlets】最小生成树(prim,kruscal都可)

    以(x,y)坐标的形式给出n个点,修建若干条路使得所有点连通(其中有两个给出的特殊点必须相邻),求所有路的总长度的最小值. 因对所修的路的形状没有限制,所以可看成带权无向完全图,边权值为两点间距离.因 ...