我想将对象设置为等于对象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?
答案 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?