我在常量文件中导出了任何对象,该文件表示用于以后累积的对象的空版本。
它看起来像这样:
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))
这是为什么?