2011-12-18 12 views
2

私は古いアプリケーション(ゲーム)を再利用しているので、複数のゲームを1つのゲームで実行することができます。 その理由から、プロパティを "this.propery"に変更しました。これはアプリケーションのどこでも使用されています。 しかし、プロパティにアクセスできる唯一のプロトタイプ関数は "startGame"です。 "this.bricks"と "Game.bricks"の両方を試しましたが、 "startGame"という他の関数でそれらに到達しようとすると、どちらも定義されていません。プロトタイプ関数からのプロパティへのアクセス

私のためのヒント?

var game = new Game(); 
game.startGame(); 

Game = function(){ 
this.bricks = 2; 
this.checkOddEven = 0; 
    ... 
} 


Game.prototype.startGame = function() { 
    console.log(this.bricks) <- 2 
    console.log(Game.bricks) <- 2 

// Code goes here... 

    Game.prototype.renderTiles() 
} 

Game.prototype.renderTiles = function() { 

// code goes here... 

    console.log(this.bricks) <- undefined 
    console.log(Game.bricks) <- undefined 

} 

...他のプロトタイプ関数も同じです。

+0

renderTiles()を呼び出していたコードを表示する必要があります。 – jfriend00

答えて

2

renderTilesを間違った方法で呼び出しています。 thisgameGameインスタンス)の代わりにGame.prototypeを参照します。

でそれを呼び出す:関数内を指し、何this

this.renderTiles(); 

は、関数が呼び出される方法によって異なります。 MDNはそれについてgood article [MDN]を提供します。


FWIW:

限り、あなたはGame機能に直接プロパティを割り当てていないとして、Game.bricksは、あなたがそれにアクセスし、どのように関数を呼び出すところもかまいませ、同様undefinedする必要があります。

+0

あなたは正しいです。私は間違った方法で機能を呼んでいた。 var = thisを追加し、関数を "this.turnTiles()"として実行します。ありがとう! – holyredbeard

関連する問題