Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
去年关闭。
控制台记录为3乘以300,这是最后一个元素的x。我不知道结果如何发生?
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
去年关闭。
var MyObject = function(x, y) {
self.x = x;
self.y = y;
return self;
}
var myObjects = [];
var f1 = new MyObject(150, 200);
var f2 = new MyObject(250, 250);
var f3 = new MyObject(300, 500);
myObjects.push(f1);
myObjects.push(f2);
myObjects.push(f3);
for (var i = 0; i < myObjects.length; i++) {
console.log(myObjects[i].x);
}
控制台记录为3乘以300,这是最后一个元素的x。我不知道结果如何发生?
最佳答案
基本上,与推送无关。当您执行self.x = x
时,它正在更新作为窗口的全局对象(例如,在全局范围内),并且您正在返回window。您的数组包含[window, window, window]
,并且每次您在窗口中覆盖x
和y
时。使用this
代替创建原型对象,如果使用new
则无需返回;