定义
JavaScript中,基本类型以及引用类型的值存储方式是不一样的,基本类型的值保存在栈中。而引用类型的值保存在堆中,并在栈中保存一个指向堆的地址。因而在复制中,直接用等号复制引用类型的值只能复制地址,如果修改复制的变量也会影响原变量。如果新开辟一块内存,把引用类型中所有属性复制过去,这种拷贝就是深拷贝,否则就是浅拷贝。
实现深拷贝
递归
1 | function deepCopy(obj) { |
json方法
1 | function deepCopy(obj) { |
jquery extend
$.extend( [deep ], target, object1 [, objectN ] )
deep表示是否深拷贝,为true为深拷贝,为false,则为浅拷贝
target Object类型 目标对象,其他对象的成员属性将被附加到该对象上。1
2
3
4
5let a=[0,1,[2,3],4],
b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);