let obj = {
a: {
b: {},
c: {}
},
a2: {
a: {}
}
};
let _obj = { ...obj, a: { ...obj.a, b: {...obj.a.b} }, a2: { ...obj.a2 } };
console.log(_obj.a.b === obj.a.b); // false
请问如果我们对每一层都进行浅拷贝是否等同于深拷贝?谢谢
等同的
对与 object 和 array,浅拷贝会拷贝指针,深拷贝会复制新版本
你这里全部都用
{...obj}
的方式复制了,确实就是复制新版本了提问代码中
b: {...obj.a.b}
其实你已经知道了复杂类型在数据结构中的具体位置,通用做法是利用递归去做。