因此,我有一个创建了数百次的对象,并且我正在使用原型来更新它们,每个都有各自不同的值。但是我相信我错误地调用了该对象,因为它无法访问该对象的任何值。

var asteroids = [];

//Create some objects
for (i=0; i<100; i++) {
    asteroids[i] = new Asteroid();
}

function Asteroid() {
    this.x = Math.random();
    this.y = Math.random();
};

//Used to update each object
Asteroid.prototype.update = function() {
    this.x += Math.random();
    this.y += Math.random();
};

//Updates all the objects by calling the prototype each second
setInterval(function() {
    Asteroid.prototype.update();
},1000);


我在原型上收到一个错误,说它无法获得值“ x”,那么使用它来更新所有对象的正确方法是什么?

最佳答案

您需要在update()的实例上执行Asteroid操作:

// Updates all the objects by calling the prototype each second
setInterval(function() {
    asteroids.forEach(function(a) { a.update(); });
}, 1000);


调用Asteroid.prototype.update()不会在update的所有实例上调用Asteroid方法。



进一步阅读


MDN reference for Array.prototype.forEach

09-11 15:14