若一个对象的属性值为对象,则该属性的属性值引用了一个对象。
let obj = {a:2};
let {...z} = obj;
obj.a = 4;
console.log(z.a); // 2
x是解构赋值的对象,解构赋值为浅拷贝,拷贝形成的对象与原对象没有关联,因此,当obj.a重新赋值为4时,z.a仍为2。
但若对象的属性值是一个对象,数组或者函数时,该属性值是一个引用,解构赋值拷贝的也是引用,即在这里,obj 和z对象的a属性的引用指向了同一个,因此,当obj.a.b 改变时,z.a.b也会发生改变。