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)之外的都是对象了,所以,不把对象学明白怎么继续往下学习呢? 一.概述 对象是一种复合值,它将很多值(原始 ...
随机推荐
- SQLServer2000数据同步复制技术方法
一. 预备工作 1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --管理工具 --计算机管理 --用户和组 --右键用户 --新建用户 ...
- 【转】GATT Profile 简介
网上关于讲解 BLE 的内容比较少,看到这篇文章写的非常详细 Introduction to Bluetooth Low Energy,作为 BLE 的入门时介绍是非常合适的.本文主要翻译了一下这篇文 ...
- 单光纤udp通信
环境: 两块板子,拥有独立系统(Linux),通过单光纤连接(数据只能单向发送,无反馈).两块板子采用udp协议通信. 问题: 发送板子发送数据后,接收板子上的进程收不到数据. 确认两块光纤 ...
- Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.design.widget.TabLayout,TableLayout引起页面崩溃
在使用TableLayout的时候,运行引用程序直接Crash. FATAL EXCEPTION: main Process: com.edaixi.activity, PID: 9703 java. ...
- java压缩/解压缩zip格式文件
因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. } ...
- C++有没有string转化int的函数,怎样转换
有两种方法1. c++中string到int的转换 1) 在C标准库里面,使用atoi: #include <cstdlib>#include <string> std::st ...
- POJ 1631 Bridging signals & 2533 Longest Ordered Subsequence
两个都是最长上升子序列,所以就放一起了 1631 因为长度为40000,所以要用O(nlogn)的算法,其实就是另用一个数组c来存储当前最长子序列每一位的最小值,然后二分查找当前值在其中的位置:如果当 ...
- 解决eclipse无法解析shared_ptr
今天心血来潮更新了一下机器上的ubuntu,装了14.04版本,原来是32位的,换成64的之后感觉是快了不少(加了内存).因为不少软件没做备份,包括eclipse,所以只得重装,重装之后的麻烦事儿就是 ...
- 解决function.bind()方法
这个 bind 方法只有在 ie10 版本的浏览器才得到原生支持,低于该版本的浏览器下执行时会得到一个 undefined 的错误提示. 于是只好再次上网 google 解决方案,功夫不负有心人,我们 ...
- 关于web的流程
1.先确定好样式,布局,风格 2.之后的页面只是加一些HTML标签而已.