jquery 深度拷贝对象、数组

本文摘自:http://lqmh18.blog.163.com/blog/static/35004776201451211347599/

网上一搜也有很多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);//返回对象的深拷贝

});