所以我有一个创建了几百次的对象,我正在使用原型来更新它们,每个都有自己不同的值。但是我相信我错误地调用了对象,因为它无法访问任何对象的值。
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);
我在原型上收到错误,说它无法获得值&#34; x&#34;,那么使用它来更新所有对象的正确方法是什么?
答案 0 :(得分:4)
您需要在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
方法。
进一步阅读
答案 1 :(得分:3)
调用附加到原型的函数不会将其应用于所有实例。这只是一个功能。您需要迭代数组并在每个对象上调用update()。