当我们需要将一个对象复制到另一个对象时,我们通常使用这样的东西:
const mainObject = { id: 1 }; const secondaryObject = { ...mainObject };
但这仅适用于复制对象的浅层属性。如果我们有类似以下代码的情况,则场景会发生变化:
const mainObject = { id: 1, user: { name: 'John Doe', age: 30 } }; const secondaryObject = { ...mainObject };
属性用户不会被复制;它仍然与 mainObject 相关。因此,如果我们更改 user 属性,它也会影响 mainObject。为了解决这个问题,我们可以执行以下操作:
const mainObject = { id: 1, user: { name: 'John Doe', age: 30 } }; const deepCopy = JSON.parse(JSON.stringify(mainObject ));
现在,我们有了 mainObject 的深层副本,具有两个不同的内存地址。
以上是JavaScript 中对象的浅拷贝与深拷贝的详细内容。更多信息请关注PHP中文网其他相关文章!