Javascript对象禁用自动更新对象父对象

时间:2017-07-10 02:31:27

标签: javascript

我有:

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{}

我如何解决这个问题?

谢谢!

2 个答案:

答案 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更快