javascript - 数组推送改变所有元素

标签 javascript

<分区>

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 时,它正在更新作为窗口的全局对象(如全局范围内的 this),并且您正在返回窗口。您的数组包含 [window, window, window] 并且每次您在窗口中覆盖 xy 时。使用 this 代替创建原型(prototype)对象,如果您使用 new;

,则无需返回

关于javascript - 数组推送改变所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51865698/

相关文章:

javascript - 这个对象在 promise 中

javascript - React Router 不渲染任何东西

javascript - 如何使用 angularjs 发布 JSON 数据

javascript - 如何通过单击删除..?

javascript - 在 JavaScript 中比较单元格背景颜色

Javascript 面向对象 + DOM?

javascript - 如何设置react-responsive-modal的模态宽度?

javascript - 从函数返回两个变量

javascript - 嵌套命名空间 JavaScript

javascript检查字符串是否只包含html