浅拷贝可理解成应用,深拷贝可理解成复制出一个全新的东西。
例如 A,B复制了A,修改A
B跟着A变化了===>浅拷贝 shallowCopy (A和B其实是指向堆内存的同一个值)
B不变===>深拷贝 deepCopy(B是不同于A的全新的不同的值)
浅拷贝例子:
var a=[1,2,3]
var b=a;
a[0]=5;
console.log(b) // [5,2,3]
深拷贝:
function deepClone(obj) {
var newObj = obj instanceof Array ? [] : {};
if (typeof obj !== 'object') {
return obj;
} else {
for (var i in obj) {
newObj[i] = typeof obj[i] === 'object' ? deepClone(obj[i]) : obj[i];
}
}
return newObj;
}
var a = [1, 2, 4, 6, [1, 2]];
var b = deepClone(a);
a[3] = 7;
console.log(a); / / [1, 2, 4, 7, [1, 2]];
console.log(b); / /[1, 2, 4, 6, [1, 2]];