我有:
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
为{}
我如何解决这个问题?
谢谢!
答案 0 :(得分:1)
这会对你有所帮助。
我们通过复制obj_a值创建obj_b
。
var obj_b = Object.assign({},obj_a);
有关详细信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
答案 1 :(得分:0)
您想要的是进行深层复制obj_a
并将其分配给obj_b
,如:
var obj_b = Object.assign({}, obj_a)
obj_a
是对您创建的对象的引用,因此行obj_b = obj_a
正在复制引用,而不是它的值。因此,当您在for循环中改变obj_b
的值时,您也会将值变为引用obj_a
。
修改:刚看了benchmarks,发现Object.assign
现在比JSON.stringify
更快