let xyz = { a:5, b:6, c:7 };
let pqr = xyz;
pqr.a=8
console.log(xyz)
在上面的代码中,如果我更新一个新变量,旧变量会自动更新。
为什么会这样?
我们可以分别使用这两个变量吗?
在 JavaScript 中,对象是通过引用而不是值来分配的。 因此,当 ding
let pqr = xyz;
时,您并不是在创建一个新对象,而是指向同一对象的新引用。
当您修改
pqr.a
时,您正在修改 xyz
所引用的同一对象。
因此,通过 pqr
所做的任何更改也将反映 xyz
,因为它们指向相同的基础设施。
要解决该问题,您可以创建该对象的副本。 使用扩展运算符 (...) 或
Object.assign()
方法创建浅副本。
let xyz = { a: 5, b: 6, c: 7 };
//spread operator to create a shallow copy
let pqr = { ...xyz };
//Or using Object.assign
//let pqr = Object.assign({}, xyz);
pqr.a = 8;
console.log(xyz); //{ a: 5, b: 6, c: 7 }
console.log(pqr); //{ a: 8, b: 6, c: 7 }