当原始对象更改时,防止通过引用创建的对象更改

时间:2018-07-27 09:31:45

标签: javascript reference javascript-objects

这件事以前可能已经讨论过,但是我还没有找到解决我的问题的方法。

所以,我的问题是这样:

我将对象的值保存到变量中。

const aux = this.myObj;

此后,通过一些操作更改了对象(this.myObj),但我想保存其初始值并能够将其重新设置为它。

类似的东西:

this.myObj = aux

但是,正如预期的那样,当原始的aux也会被修改。

对此有解决方案吗?

2 个答案:

答案 0 :(得分:3)

您需要克隆对象并将其数据保存到另一个变量。

var clone = Object.assign({}, obj);

对于嵌套对象,可以使用各种方法实现深度克隆。对于具有嵌套键-值对的简单结构化对象,其中之一。

var clone = JSON.parse(JSON.stringify(obj));

或使用下划线和lodash之类的库。

答案 1 :(得分:1)

Object.assign({}, obj)只是复制给定对象的属性值,所以它不是一个很好的解决方法,我建议使用lodash's _.cloneDeep,因为它可以为您进行深度克隆。 您只需要执行以下操作即可。

const aux = _.cloneDeep(this.myObj)