我了解扩展语法会对对象进行浅拷贝,也就是说克隆的对象与原始对象引用相同。
然而,实际行为似乎有些矛盾和令人困惑。
上述行为是有道理的,因为通过更新`oldObj`,也会更新`newObj`,因为它们引用同一个位置。
我不明白,为什么
如果我没记错的话,它们仍然指向同一个位置,但为什么对
然而,实际行为似乎有些矛盾和令人困惑。
const oldObj = {a: {b: 10}};
const newObj = {...oldObj};
oldObj.a.b = 2;
newObj //{a: {b: 2}}
oldObj //{a: {b: 2}}
上述行为是有道理的,因为通过更新`oldObj`,也会更新`newObj`,因为它们引用同一个位置。
const oldWeirdObj = {a:5,b:3};
const newWeirdObj = {...oldWeirdObj};
oldWeirdObj.a=2;
oldWeirdObj //{a:2,b:3}
newWeirdObj //{a:5,b:3}
我不明白,为什么
newWeirdObj
没有像oldWeirdObj
一样更新?如果我没记错的话,它们仍然指向同一个位置,但为什么对
oldWeirdObj
的更新没有影响到newWeirdObj
?