声明一个对象 aa,
let aa = {
name: '李白',
say() {
console.log(this.name + '乘舟将欲行');
}
}
再声明一个变量 bb,另 bb = aa;
let bb = aa;
此时,bb.name; // 李白
更改bb的name属性,则aa对象的name属性也会跟着改变,
通过 对象深拷贝 解决
function deepClone(obj) {
if (typeof obj != 'object' || obj == null){
return obj;
}
let result;
if (obj instanceof Array) {
result = [];
} else {
result = {}
}
for (let key in obj){
if (obj.hasOwnProperty(key)){
result[key] = deepClone(obj[key]);
}
}
return result;
}
可以看到,通过 deepClone 赋值的 bb2,改变name,aa不会跟着改变,深拷贝实现。