$.extend(dest,src1,src2....srcN)
将src1,src2...srcN的每一项合并为dest的每一项,并返回合并后的对象,会修改dest
$.extend({},dest,src1,src2...srcN);
将src1,src2...srcN的每一项合并为dest的每一项,并返回合并后的对象,不会修改dest
var src1 = {name:"tom",location:{city:"Beijing",county:"China"}};
var src2 = {name:"job",location:{live:"New York",county:"USA"}};
$.extend(true,src1,src2);
==>
{name: "job", location: {city: "Beijing",county: "USA",live: "New York"}}
为深层拷贝:
如果第二个参数对象有的属性第一个参数对象也有,还要继续在这个相同的参数向下一层找,比较相同参数的对象中是否还有不一样的属性,如果有,将其继承到第一个对象,如果没有,则覆盖。
里面的子元素也会进行合并
$.extend(false,src1,src2);
==>
{name: "job", location:{live:"New York",county:"USA"}}
为浅拷贝:
默认情况是false(浅拷贝),并且false是不能够显示的写出来的。如果想写,只能写true(深拷贝)~~
如果第二个参数对象有的属性第一个参数对象也有,那么不会进行相同参数内部的比较,直接将第一个对象的相同参数覆盖。
里面的子元素不会合并,直接覆盖