深克隆与浅克隆

什么是深拷贝?什么是浅拷贝?

深拷贝是:复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变;

浅拷贝是:只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;

①递归完成深克隆 

function deepClone(arr){

      if(typeof arr != "object"){

             return arr;

      }

      var result = {};

      for(var i in arr){

            result[i] = deepClone(arr[i]);

      }

      return result;

}

var newarr = deepClone(arr);

②利用json

var arr = [1,5,3,6,8,4];

var newarr = JSON.parse(JSON.stringify(arr));

③$.extend

$.extend( [deep ], target, object1 [, objectN ] )
deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝
target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。
object1 objectN可选。 Object类型 第一个以及第N个被合并的对象。

你可能感兴趣的:(深克隆与浅克隆)