我有一小段代码
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
为什么数组中的第二个元素与数组中的第一个元素相同?
答案 0 :(得分:2)
为什么数组中的第二个元素与数组中的第一个元素相同?
对象保留为引用,即
a = {foo: 'bar'};
a.foo; // "bar"
b = a;
b.foo = null;
a.foo; // null
因此,当您执行push
时,它不会创建新的 Object ,它是ball
的克隆,而是在内存中创建对该位置的新引用ball
已经在哪里。