如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以使用$.extend()方法 语法: $.extend([deep],target,object1,[objectN]); 1.deep:如果设为true为深拷贝,默认false浅拷贝 2.target:要拷贝的目标对象 3.object1:待拷贝到第一个对象的对象 4.objectN:待拷贝到第 N 个对象的对象 5.浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象 6.深拷贝,前面加true,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象 $(function(){ var targetObj = { } ; // 第一种情况: var obj ={ id : 1 , name : "andy" }; $.extend( targetObj , obj ) ; // 把 obj 中的数据 拷贝到 targetObj中 console.log( targetObj); // id : 1 , name : " andy " // 第二种情况: var targetObj = { id : 0 } ; var obj ={ id : 1 , name : "andy" }; $.extend( targetObj , obj ) ; // 把 obj 中的数据 拷贝到 targetObj中 console.log( targetObj); // id : 1 , name : " andy " // 会覆盖 targetObj 里面的数据 // 第三种情况: var targetObj = { id : 0 msg : { sex : ' 男 ' } } ; var obj ={ id : 1 , name : "andy" msg : { age : 18 } }; $.extend( targetObj , obj ) ; // 把 obj 中的数据 浅拷贝到 targetObj中 console.log( targetObj); // id : 1 , name : " andy " msg{age:18} // 会覆盖 targetObj 里面的数据 ,复杂对象只会拷贝数据中的地址
// 第四种情况: var targetObj = { id : 0 msg : { sex : ' 男 ' } } ; var obj ={ id : 1 , name : "andy" msg : { age : 18 } }; $.extend( true , targetObj , obj ) ; // 把 obj 中的数据 深拷贝到 targetObj中 console.log( targetObj); // id : 1 , name : " andy " msg{age:18,sex:'男'} // 深拷贝把里面的数据完全复制一份给目标对象,如果里面有不冲突的属性,会合并到一起
})