浅拷贝与深拷贝

浅拷贝:拷贝的对象还是公用一个内存,一个对象的值改变,另外一个对象的值也会改变

深拷贝:拷贝对象非公用一个内存,改变对应的值互不改变

 

var obj = {a:10};

var obj1 = obj;

obj1.a = 20;

console.log(obj.a=20);//浅拷贝

es6 Objec.assign 是浅拷贝 但是如果是一层的基本类型则可以深拷贝

 

深拷贝

 

1.把对应的值复制给新对象对应地key

2.JSON,stringify 转成串再转成 对象(隐患如果是方法则会出现问题)

3.通过Object.create();for循环遍历来深拷贝

4.通过递归arguments.callee来深拷贝

5.jq $.extend 深拷贝

6.lodash.deepclone

你可能感兴趣的:(js)