为什么将一个对象的值分配给另一个对象的值,然后重新分配原始对象会更改两个对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么将一个对象的值分配给另一个对象的值,然后重新分配原始对象会更改两个对象?相关的知识,希望对你有一定的参考价值。
我正在对以下对象数组执行一些计算:
array = [ { x: 6, y: 2 }, { x: 7, y: 2 }, { x: 8, y: 2 } ]
在每次迭代中,我将每个对象都设置为等于其相邻对象,但索引0处的对象除外。
for (let i = array.length - 1; i > 0; i--) {
array[i] = array[i-1]
}
并且得到以下答案:
[ { x: 6, y: 2 }, { x: 6, y: 2 }, { x: 7, y: 2 } ]
然后我将对象设置为索引0,并得到:
[array[0].x = 5
并得到:[ { x: 5, y: 2 }, { x: 5, y: 2 }, { x: 7, y: 2 } ]
我的假设是索引1的对象也不会被更改。为什么会这样?
答案
这是因为您要分配引用而不是值:
array[i] = array[i-1]
您可以使用例如Object.assign()
创建对象的浅表副本:
array[i] = Object.assign({}, array[i-1])
以上是关于为什么将一个对象的值分配给另一个对象的值,然后重新分配原始对象会更改两个对象?的主要内容,如果未能解决你的问题,请参考以下文章
即使将输入变量分配给另一个变量,python如何更改函数中输入变量的值? [复制]