Javascript:编辑对象属性更改来自不同对象的属性

时间:2017-01-21 17:36:49

标签: javascript object properties

我想将对象设置为等于对象b,然后从对象a编辑属性x。 但是,当我编辑a.x时,由于某种原因b.x也会发生变化。我该如何解决这个问题?

var b = {
    x: 0,
    y: 3

};
var a = b;
alert(b.x); //outputs 0
a.x = 1;
alert(b.x); //outputs 1?

1 个答案:

答案 0 :(得分:1)

实际上,b指向同一个对象a,即两个变量都引用最初创建的同一个对象。而是使用Object.assign方法将所有属性复制到新对象。

var b = {
  x: 0,
  y: 3

};
var a = Object.assign({}, b);
alert(b.x); //outputs 0
a.x = 1;
alert(b.x); //outputs 1?

对于较旧的浏览器,请检查该方法的polyfill option

<小时/> 请参阅:Is JavaScript a pass-by-reference or pass-by-value language?