Javascript对象分配和结构共享

时间:2017-10-04 14:43:14

标签: javascript javascript-objects immutability

我一直在尝试使用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的位置的引用吗?

我基本上只是问这种方法是否实现了某种类型的结构共享"?人们可以看到,如果情况并非如此,则会导致显着的记忆膨胀。

1 个答案:

答案 0 :(得分:0)

console.log(objectFirst['key1'] === objectNext['key1']); // true 

console.log(objectFirst['key2'] === objectNext['key2']); // false

这意味着 objectFirstobjectNext 共享 key1 属性。