你的位置:首页 > Java教程

[Java教程]$.extend()函数用法详解


$.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