我想更改对象内部对象的属性。但是,当我这样做时,使用相同原型创建的其他对象属性也发生了变化。
代码如下:
var a = {
x: { y: 'foo' }
}
var b = Object.create(a)
var c = Object.create(a)
console.log(a.x.y) // 'foo'
console.log(b.x.y) // 'foo'
console.log(c.x.y) // 'foo'
b.x.y = 'bar'
var d = Object.create(a)
console.log(a.x.y) // 'bar'
console.log(b.x.y) // 'bar'
console.log(c.x.y) // 'bar'
console.log(d.x.y) // 'bar'
我认为问题是因为所有对象都引用相同的x
,因此改变y
来自任何物体反映在所有物体中。谁能解释一下这里到底发生了什么,也许可以提供解决方法的参考和建议?
x
是一个对象,这就是为什么它由指针引用,而不是像字符串那样由值引用。
请尝试以下解决方法:
b.x = { y: 'bar' } // instead of b.x.y = 'bar'
这会创建一个新对象x
这将与其他人不同
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)