属性值为对象时

若一个对象的属性值为对象,则该属性的属性值引用了一个对象。

    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也会发生改变。

你可能感兴趣的:(属性值为对象时)