2013-08-30 34 views
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 

为什么是阵列相同的第二元件作为数组中的第一个元素?

+2

什么在'球'? –

+2

_Objects_是引用 –

+0

没有看到“球”数组如何初始化,很难给出准确的答案。 – Pointy

回答

2

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

对象保持作为参考,即

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

所以当你做push,它不会创建一个新的对象这是ball克隆,而是创建一个新的参考已经存在ball的地方。