JavaScript 对象扩展代码
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 对象扩展代码的更多相关文章
- Javascript对象、Jquery扩展简单应用
Javascript对象,表现方式一: person = new Object(); person.firstname = "An"; person.lastname = &quo ...
- Ext JS学习第九天 Ext基础之 扩展原生的javascript对象
此文来记录学习笔记: •Ext对于原生的javascript对象进行了一系列的扩展,我们把他们掌握好,更能深刻的体会Ext的架构,从而对我们的web开发更好的服务, 源码位置,我们可以从开发包的这个位 ...
- Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
此文来记录学习笔记: 今天继续说Ext.Array,Ext.Function,Ext.Date,Ext.Error ------------------------------------------ ...
- 深入理解javascript对象系列第二篇——属性操作
× 目录 [1]查询 [2]设置 [3]删除[4]继承 前面的话 对于对象来说,属性操作是绕不开的话题.类似于“增删改查”的基本操作,属性操作分为属性查询.属性设置.属性删除,还包括属性继承.本文是对 ...
- web前端学习(二) javascript对象和原型继承
目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...
- Javascript 语言精粹 代码片段合集
Javascript 语言精粹 代码片段合集 标签:Douglas-Crockford Javascript 最佳实践 原文链接 更好的阅读体验 使用一个method 方法定义新方法 Function ...
- 第六章:Javascript对象
对象是javascript的基本数据类型.对象是一种复合值.它将很多值(原始值 或者其他对象)聚合在一起.可通过名字访问这些值.对象也可以看做是属性的无序集合,每个属性都有一个名/值.属性名是字符串, ...
- JavaScript对象进阶
要了解JavaScript对象,我们可以从对象创建.属性操作.对象方法这几个方面入手.概括起来,包括以下几模块: 1.创建对象 1.1 对象直接量 对象直接量是创建对象最简单的方式,由若干名/值对组成 ...
- 深入学习JavaScript对象
JavaScript中,除了五种原始类型(即数字,字符串,布尔值,null,undefined)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始 ...
随机推荐
- [Math]Reverse Integer
Total Accepted: 111287 Total Submissions: 474471 Difficulty: Easy Reverse digits of an integer. Exam ...
- TCP/IP详解之:SNMP
基于TCP/IP的网络管理包含3个组成部分: 一个管理信息库MIB:MIB包含所有代理进程的所有可被查询和修改的参数 关于MIB的一套公用的结构和表示符号,即SMI(管理信息结构) 管理进程和代理进程 ...
- Redis 作为缓存服务器的配置
随着redis的发展,越来越多的架构用它取代了memcached作为缓存服务器的角色,它有几个很突出的特点:1. 除了Hash,还提供了Sorted Set, List等数据结构2. 可以持久化到磁盘 ...
- oracle中的rowid和数据行的结构
在oracle数据库系统中每一行都有一个rowid,oracle数据库系统就是利用rowid来定位数据行的.rowid也是oracle中内置的一个标量数据类型 rowid有一下特点; 是数据库中每一行 ...
- Transition 所支持的css属性
transition-property是用来指定当元素其中一个属性改变时执行transition效果: 所支持的属性类型如下: color: 通过红.绿.蓝和透明度组件变换(每个数值处理)如:back ...
- eclipse tomcat内存设置
-Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m
- SQL Server 与内存相关的术语
术语 1. virtual address space 虚拟地址空间 它是一个应用程序可以访问的最大地址空间.32位机上是4G(2^32).虚拟地址空间中的数据不一定在物理内存里.可能在缓存文件中. ...
- centos 安装amp 运行环境+配置虚拟地址
一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysql mysql-server 安装完毕,让 MySQ ...
- openjpa框架入门_项目 database 启动project 初始化(三)
mysql数据库安装好,这里不多说,现在来执行sql脚本 http://download.csdn.net/detail/shenhonglei1234/6019677 将下载好的脚本后缀名“open ...
- 任何时候都适用的20个C++技巧
这些小技巧之所以特别,是因为这些信息通常吧不能在C++书籍或者网站上找到.比如说,成员指针,即使对于高级程序员也是比较棘手,和易于产生bugs的,是应该尽量避免的问题之一. <翻 by凌云健笔& ...