作为对象引用属性的JavaScript对象
我想了解对象在JS中的工作方式。
const obj = { inner: { a: 'Hello' } };
const clone = { ...obj };
// obj === clone -> false
// !!! BUT !!!
// obj.inner === clone.inner -> true
clone.inner = { a: 'world' };
// obj === { inner: { a: 'Hello' } }
// clone === { inner: { a: 'World' } }
是否有关于此行为的文档?通过扩散运算符创建新对象时,是否可以依赖内部对象引用相等?
解决方案
...
spread syntax
创建浅层副本,任何比级别1更深的内容仍将保留为对原始对象的引用
const obj = { inner: { a: 'Hello' } };
const clone = { ...obj };
console.log(obj === clone)
console.log(obj.inner === clone.inner)
相关文章