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);//返回对象的深拷贝
});

 

posted @ 2015-03-25 11:09  空问  阅读(1618)  评论(0编辑  收藏  举报