jquery 深度拷贝对象、数组
网上一搜也有很多js深度拷贝的解决方案,但由于项目基本都会用到jquery,那些解决方案基本都会跟jquery有冲突,所以起不了作用,这里介绍下jquery的深度拷贝,也是参考网上的资料来的;
深拷贝与浅拷贝对象:
// 浅层复制(只复制顶层的非 object 元素)
var newObject = $.extend({}, oldObject);
第一参数为目标对象,第二个参数为被拷贝对象,拷贝完将第一个参数作为返回值
// 深层复制(一层一层往下复制直到最底层)
var newObject = $.extend(true, {}, oldObject); 第一个参数表示是否进行深拷贝
//浅拷贝
$.map(json, function (n) { return n; });
如:
jQuery 代码:
$.map( [0,1,2], function(n){
return n + 4;
});
结果:
[4, 5, 6]
回调函数会遍历数组的每一个对象,如果数组里是对象而不是基本类型的话,返回的数组里的对象跟原来数组里的对象是一样的,引用的是同一个对象;
//深拷贝
数组深拷贝是将数组浅拷贝与对象深拷贝结合后得到的解决方案:
jQuery 代码:
$.map( [obj1,obj2,obj3], function(obj){
return $.extend(true,{},obj);//返回对象的深拷贝
});