gpt4 book ai didi

javascript - 更改javascript对象内对象属性的值会影响其他对象

转载 作者:行者123 更新时间:2023-11-29 19:23:38 25 4
gpt4 key购买 nike

我想在对象内部更改对象的属性。但是,当我这样做时,使用相同原型(prototype)创建的其他对象属性也发生了变化。

代码如下:

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,因此从反射(reflect)在所有对象中的任何对象更改 y。任何人都可以解释这里到底发生了什么,也许可以提供解决方法的引用和建议吗?

最佳答案

x 是一个对象,这就是为什么它被指针引用而不是像字符串那样被值引用。

请尝试以下解决方法:

b.x = { y: 'bar' } // instead of b.x.y = 'bar'

这将创建一个新对象x,它将与其他对象不同

关于javascript - 更改javascript对象内对象属性的值会影响其他对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com