たくさんのことが起こっているので、質問を最もよく説明する方法がわからなかったので、先に進んで、私がやっていることのサンプルを作成しました. 以下はコードです:
var cl = new Class();
cl.handleAction("triggerScream");
cl.handleAction('triggerDisplay');
function Class()
{
//function which will print static string
this.scream = function(){
document.write("AAAAAAA!!!<br/>");
}
//function which will print the class variable
this.display = function(){
document.write( this.color );
};
//sample class variable
this.color = 'red';
//map of actions
this.actions = {
'triggerDisplay' : this.display,
'triggerScream' : this.scream
};
//generic function that handles all actions
this.handleAction = function(action){
try{
this.actions[action]();
}catch(err)
{
document.write("Error doing "+action);
}
};
}
そして、これが jsbin リンクです: http://jsbin.com/etimer/2/edit
要約すると、handleAction()
さまざまなイベントを処理し、他の関数を呼び出してイベントを完了する関数があります。そのために、呼び出すアクション イベントと関数のマップがあります。クラスの関数display()
はクラス変数にアクセスしますが、何らかの理由this
でその関数内で定義されていません。変数にアクセスし、できればコードアーキテクチャを維持できるように、それを修正する理由と方法についてのアイデアはありますか?
前もって感謝します。