$.extend()函数用法详解:
此函数也可以写作为jQuery.extend(),在自定义插件的时候非常常用,下面就一一介绍一下此函数有哪些用法:
$.extend()函数能够对对象进行扩展,并返回扩展后的对象,格式如下:
var result=$.extend(dest,src1,src2,src3...)
以上格式的含义是,将src1、src2和src3等对象合并到dest对象中去,代码实例如下:
var result=$.extend({username:"zhang",age:26},{sex:"男",address:"china"})
合并后的结果是:
result={username:"zhang",age:26,sex:"男",address:"china"}
由以上结果可以看出$.extend()函数将后面的对象合并到了第一个对象。再看一个实例:
var result=$.extend({username:"zhang",age:26},{sex:"男",age:27},{sex:"女",address:"china"})
合并后的结果如下:
result={username:"zhang",age:27,sex:"女",address:"china"}
由以上结果可以看出,如果后面对象中的属性和前面对象中的属性重名,那么后面的属性值可以覆盖前面的属性值。
省略参数dest:
$.extend()函数的dest参数是可选的,如果省略该参数,那么此函数只能够有一个参数,并且将此对象合并到jQuery全局对象中去。
代码实例如下:
$.extend({minValue:function(a,b){return a<b?a:b;}})
将对象合并到jQuery对象中去,也就是将函数添添加到了jQuery中去,代码实例如下:
$.minValue(3,4)
以上的返回值就是3。
是否深度拷贝:
此方法其实还有一个可选参数在上面没有介绍,因为感觉放到最后介绍更为合理一下,在文章的开头讲到函数的格式如下:
var result=$.extend(dest,src1,src2,src3...)
其实更为完整的格式是:
var result=extend(boolean,dest,src1,src2,src3...)
第一个参数是布尔值,用于表示是否进行深度拷贝,如果参数为true,则进行深度拷贝,否则不进行深度拷贝,此参数的默认值为true。
先看一段代码实例:
var result=$.extend(true,{}, { username: "zhang", address: {city: "qingdao",county:"china"} }, { age: "26", address: {xian: "mengyin",county:"England"} } )
如果进行深度拷贝,那么上面的代码的结果就是:
var result={username:"zhang",age:26, address:{city:"qingdao",xian:"mengyin",county:"England"}}
不进行深度拷贝的结果如下:
var result={username:"zhang",age:26, address: {xian: "mengyin",county:"England"}}
由此可见,深度拷贝也会将嵌套的对象进行合并。
原文地址是http://www.51texiao.cn/jqueryjiaocheng/2015/0504/680.html