JQuery.extend()

本文详细介绍了jQuery中的对象合并方法$.extend的使用技巧,包括浅拷贝与深拷贝的区别、如何避免属性覆盖以及如何将方法合并到jQuery实例或全局对象中。

var src1 = {

name:"tom",

age:21

};

var src2 = {

name:"jack",

sex:"男"

};

 

//将src1、src2合并,合并的结果保存到src1中,并返回给merger

//所以src1被改变了结构,src2没有

//合并之后后面对象的相同属性会覆盖之前对象的

var merger = $.extend(src1,src2);

 

for(var i in merger){

 

if(typeof i =="function"){

merger[i]();

}else{

//alert(merger[i]);

}

}

//src1结构被改变,同merger是一样的机构

for(var i in src1){

 

if(typeof i =="function"){

merger[i]();

}else{

alert(merger[i]);

}

 

}

 

for(var i in src2){

 

if(typeof i =="function"){

merger[i]();

}else{

alert(merger[i]);

}

 

}

//如果不想覆盖任意变量

//可以有如下形式

//$.extend({},src1,src2);这里就是简单合并并返回合并结果对象了

 

//如果该方法就只有一个src参数,则是将该src合并到调用extend方法的对象中去

//$.extend({hello:function(){alert('hello');}});就是将hello方法合并到jquery的全局对象中

 

//如果src1存在嵌套的情况,就要使用extend的深度拷贝的参数$.extend(boolean,dest,src1,src2,src3...)

//这里的boolean不写或者没有,那么默认就是false

 

var result=$.extend(true, {},

{ name: "John", location: {city:"Boston",county:"USA"} },

{ last: "Resig", location: {state:"MA",county:"China"} } );

 //我们可以看出src1中嵌套子对象location:{city:"Boston"},src2中也嵌套子对象location:{state:"MA"},

 //第一个深度拷贝参数为true,那么合并后的结果就是: 

//result={name:"John",last:"Resig",

//location:{city:"Boston",state:"MA",county:"China"}}

//也就是说它会将src1中的嵌套子对象也进行合并,而如果第一个参数boolean为false,我们看看合并的结果是什么,如下:

var result=$.extend(false, {},

{ name: "John", location:{city:"Boston",county:"USA"} },

{ last: "Resig", location: {state:"MA",county:"China"} }

);

//那么合并后的结果就是:

//result={name:"John",last:"Resig",location:{state:"MA",county:"China"}}

 

//$.fn.extend({hello:function(){alert('hello');}});就是将hello方法合并到jquery的实例对象中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值