数组中的重复变量,并不意味着重复

时间:2013-08-30 13:28:34

标签: javascript arrays

我有一小段代码

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

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

1 个答案:

答案 0 :(得分:2)

  

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

对象保留为引用,即

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

因此,当您执行push时,它不会创建新的 Object ,它是ball的克隆,而是在内存中创建对该位置的新引用ball已经在哪里。