我想循環訪問一個gameobjects數組並調用它們的更新方法。 Gameobjects可以有不同的更新實現(例如:更新敵人不同於朋友更新),所以我創建了一個原型繼承鏈。但我無法實現它:在遍歷所有對象時,我似乎無法調用它們的更新方法:編譯器說它們不存在。所以我的問題是:是否有可能在Javascript中循環共享相同基類的對象數組,並調用可以被不同子類覆蓋的方法?Javascript從數組中調用對象方法?
這是我到目前爲止,不知道我哪裏錯了...:
//base gameobject class
function GameObject(name) {
this.name = name
};
GameObject.prototype.update = function(deltaTime) {
throw new Error("can't call abstract method!")
};
//enemy inherits from gameobject
function Enemy() {
GameObject.apply(this, arguments)
};
Enemy.prototype = new GameObject();
Enemy.prototype.constructor = Enemy;
Enemy.prototype.update = function(deltaTime) {
alert("In update of Enemy " + this.name);
};
var gameobjects = new Array();
// add enemy to array
gameobjects[gameobjects.length] = new Enemy("weirdenemy");
// this doesn't work: says 'gameobject doesn't have update method'
for (gameobject in gameobjects) {
gameobject.update(1); // doesn't work!!
}
謝謝你,現在的工作。我在錯誤的地方尋找問題。 – svanheste 2014-12-13 15:07:56