0

我有这段非常小的代码

for(var i = 0; i < 4; i ++)
{
    var ball = balls[i];
    totalBalls.push( ball );
}

当我尝试这个

console.log( totalBalls[0].xPos ) // = 10
console.log( totalBalls[1].xPos ) // = 10
balls.xPos += 10;
console.log( totalBalls[0].xPos ) // 20
console.log( totalBalls[1].xPos ) // 20

为什么数组中的第二个元素与数组中的第一个元素相同?

4

1 回答 1

2

为什么数组中的第二个元素与数组中的第一个元素相同?

对象被保存为引用,即

a = {foo: 'bar'};
a.foo; // "bar"
b = a;
b.foo = null;
a.foo; // null

因此,当您这样做时push,它不会创建一个新的Object克隆ball,而是创建一个对内存中ball已经存在的位置的新引用。

于 2013-08-30T13:32:46.103 回答