对Javascript对象副本的更改导致原始文档被修改

时间:2020-03-29 17:16:48

标签: javascript typescript

我在常量文件中导出了任何对象,该文件表示用于以后累积的对象的空版本。

它看起来像这样:

export const EMPTY_ACCUM = {
  total: { imp: 0, milesDriven: 0 },
  weekly: { imp: 0, milesDriven: 0 },
}

在代码的其他地方,我遍历数据库返回的条目并创建地图。每当在地图对象中找不到我的任何一行时,我都会像这样创建它:

accum[row.id] = {
   ...EMPTY_ACCUM,
   // Other stuff
}

尽管如此,我在地图中有多个唯一的对象,每个对象都有各自的属性,但EMPTY_ACCUM对象的属性值(总计/每周imp / milesDriven)完全相同。我不明白该对象如何在我的常量文件中维护对原始对象的引用。甚至使用

之类的方法自然克隆对象
...Object.assign({}, EMPTY_ACCUM)

使值相同。创建原始对象的真实副本的唯一方法是JSON.parse(JSON.stringify(EMPTY_ACCUM))

这是为什么?

0 个答案:

没有答案