浅谈jquery中的extend

extend 有2种常用的方法:

1 扩充 jQuery ,用法详见api。。

2 对象的扩充(我更想叫它合并): 后面的覆盖前面的, 并且返回被覆盖后的对象...

var objectA = {a : 'aaa' , b: 'bbb' } ; var objectB = {c : 'ccc' , b: 'b' } ;

var opt = jQuery.extend(objectA, objectB);

console.log(opt); // 结果 opt {a:'aaa', b:'b' , c:'ccc'};


没事,就写了个假的:

先写一个函数: var MyExt = function () {...}
1 扩充,一般是基于 MyExt['name'] = xxx, 所以,当传一个参数时:

if(arguments.length == 1) {

var obj = arguments[0]; // 让obj等于第一个参数

var target = this; // this 是 MyExt

for( var name in obj){

target[name] = obj [name]; //加入扩展

}

}

2 覆盖, 就让他重复好了,,

if(arguments.length == 2) {

var obj1 = arguments[0], obj2 = arguments[1];

var target = obj1;

for( var name in obj2){

target[name] = obj2 [name];

}
return target;

}

所以,这个方法的雏形就有了(一个可以扩展MyExt,和合并对象的extend), 当然,是应该优化的!

MyExt.extend = MyExt.prototype.extend = function() {
if(arguments.length == 1) {
var obj = arguments[0];
var target = this; // this 是 MyExt
for( var name in obj){
target[name] = obj [name];
}
}
if(arguments.length == 2) {
var obj1 = arguments[0], obj2 = arguments[1];
var target = obj1;
for( var name in obj2){
target[name] = obj2 [name];
}
return target;
}

}

如果有兴趣, 参见 jquery-1.3.1.js ... 550 - 600行左右,


原文: [url]http://hi.baidu.com/ezscript/blog/item/05a73752e2d2d32842a75bc4.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值