从原型调用对象值的正确方法?

时间:2017-10-03 02:54:01

标签: javascript html5-canvas

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

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;,那么使用它来更新所有对象的正确方法是什么?

2 个答案:

答案 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()。