我将obj1复制到obj2,但是当我在obj2中进行更改时,对象obj1的值也在更改。如何停止呢?
let p24: ProductModule=new ProductModule();
p24= this.productlist[g];
p24.variants=[];
p24.variants.push(p.variants[h]);
this.newproductlist.push(p24);
这里this.productlist[g]
是一个数组,但是当我执行p24.variants=[];
时
this.productlist[g]
中的action值也变为空
答案 0 :(得分:1)
有多种方法可以在Javascript中克隆对象。
最简单的方法(深层克隆/复制);
p24= JSON.parse(JSON.stringify(this.productlist[g]));
注意:通过执行此操作,您可以释放对象的原始类型。
或者您也可以按照JGFMK的建议查看Object.assign,Object.create和spread(... object)运算符
答案 1 :(得分:1)
当您将javascript对象分配给另一个对象时,两者都将指向相同的内存位置。这就是如果您在一个对象上进行更新的原因,相同的对象将在另一个对象上进行更新。为了避免这种情况
选项1:
p24 = JSON.parse(JSON.stringify(this.productlist[g]));
选项2:
p24 = {...this.productlist[g]};
答案 2 :(得分:1)