我不太确定问题标题, 这是情况,请看下面的示例代码
// original data
a = [
{x : 1},
{x : 2},
{x : 3}
]
// assign to a variable
b = a[0]
// do some change
b.x = 5
alert(a[0].x)
// i thought it would still be 1 but it is 5, why???
*编辑
谢谢安 bool 和安德烈
我想我只需编写一个函数来循环对象属性以复制到新对象
再次感谢您的帮助:)
最佳答案
对象是通过引用分配的 - 这意味着当您修改引用该对象的任何内容时,它会在每次引用该对象的情况下对其进行修改。
b
仅存储对 a[0]
存储引用的同一对象的引用。
关于javascript对象属性值冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253184/