我一直在尝试使用javascript对象进行不变性的概念。我想知道下面的代码示例是否实现了我所认为的#34; Structural Sharing" (见:https://www.youtube.com/watch?v=e-5obm1G_FY&start=1123)。
const objectFirst = {
key1: 1,
key2: 2
}
const updateObject = (lastObject) => {
const updatedObject = {...lastObject, ...{ key2: 4 }} // Object.assign({}, lastObject, { key2: 4 })
return updatedObject
}
const objectNext = updateObject(objectFirst)
objectNext现在是{key1:1,Key2:4}并且objectFirst未更改。但是key1被复制了吗?或者,它们现在基本上是对两个对象共享的内存中key1的位置的引用吗?
我基本上只是问这种方法是否实现了某种类型的结构共享"?人们可以看到,如果情况并非如此,则会导致显着的记忆膨胀。
答案 0 :(得分:0)
console.log(objectFirst['key1'] === objectNext['key1']); // true
console.log(objectFirst['key2'] === objectNext['key2']); // false
这意味着 objectFirst
和 objectNext
共享 key1
属性。