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