我有:
var obj_a = {"A":1231,"B":34534,...};
var obj_b = obj_a;
for(var id in obj_b){
//do something
delete obj_b[id];
}
console.log(obj_b); // {}
console.log(obj_a); // {}
我不想obj_a
{}
我该如何解决这个问题?
谢谢!
这会对你有所帮助。 我们通过复制obj_a价值来创造obj_b
。
var obj_b = Object.assign({},obj_a);
获取更多信息 : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
你想要的是做一个深度复制obj_a
并将其分配给obj_b
,如下所示:
var obj_b = Object.assign({}, obj_a)
obj_a
是对你创建的对象的引用,因此obj_b = obj_a
行是对引用的副本,而不是它的值。因此,当您改变 for 循环中obj_b
的值时,您也会将值更改为obj_a
持有的引用。
编辑:刚刚看了一下基准测试,注意到Object.assign
现在比JSON.stringify
更快