私はOOPを初めて使いました。私はOOPの原則を学ぶための簡単なゲームスクリプトを書いています。JS OOPプロトタイプ関数呼び出しの外(スコープ)
//main game function
battleLevel.prototype =
{
battle:function() {
this.obj1 = {
enterMonsterMenu: function() {
return console.log('enterMonsterMenu');
}
};
},
} /* end OOP prototype */
//external contructor
var Hero = function (warpX, warpY, game, name, life, mana, speed) {
//some code
};
Hero.prototype.monsterSelectUp = function() {
console.log('monsterSelectUp');
//this.enterMonsterMenu();
battleLevel.prototype.battle.call(obj1);
};
私はmonsterSelectUp()を呼び出すことによってenterMonsterMenu()メソッドにアクセスしたいが、私はそれを正しく呼び出すことはできません。私が間違っていることは何ですか?
あなたの返信ありがとう:)、私はここで範囲の問題を解決しようとしています。 battleLevel.prototypeの中にあるメソッドを別のプロトタイプメソッドから呼び出すことが可能なのかどうか分かりませんか? –
@PawełKwiatkowskiでは、プロトタイプからメソッドを呼び出すべきではありません。代わりに、通常のオブジェクトを作成して使用する必要があります。たとえば、 'level = new BattleLevel();ヒーロー=新しいヒーロー(); hero.enterLevel(レベル) 'と' enterLevel'の内部でレベルメソッド 'level.doSomethingWithHero(this)'を呼び出すことができます。 –
@PawełKwiatkowskiまた、私は 'battle'メソッドの中で新しいオブジェクトを作成し、それを' this'に割り当てるという点は見ません。あなたは何を達成しようとしていますか? "obj1"の目的は何ですか? –