2011-02-02 6 views
0

だが、これは私のコード私は(ページ上のonclickからのような)「外部」オブジェクトから機能doThat()(私ができる場合)を呼び出してくださいどのようにJavascript Object Oriented:オブジェクト内部の関数をトラバースする方法は?

var myObject = { 

    varA: true, 
    varB: false, 

    init: function() { 

     //do something 
    }, 


    doThis: function() { 

     //do this 

     function doThat(){ 

      //do that 

     } 

    } 

} 

あるとしましょうか?出来ますか?

私は働いている/ previsousデベロッパーによって残されたコードをハッキングしていますが、私はsrcatchからすべてを書き直したくないので、良い回避策は十分に受け入れられています!ありがとう

答えて

1

できません。

機能doThatは、どの外部スコープにも公開されていません。 doThatへの参照を返すように何らかの形でdoThisを変更しない限り、関数を他の場所に宣言する以外に、それを呼び出す方法はありません。

1

変更せずにこれを行う方法はありません。myObject; doThatは事実上プライベート関数です。これを回避するには、doThatのプロパティをdoThisとするなど、いくつかの方法があります。これは推奨されていませんが、でハッキングしたと言いました。

0

できません。 doThatは、doThisまたはmyObjectのプロパティではありません。囲まれたdoThat関数を公開するには、コードを変更する必要があります。

var myObj = { 
    doThis: function() { 
    console.log("doing this"); 
    return function doThat() { console.log("doing that"); }; 
    } 
}; 

上記のあなたが聞かせ:

myObj.doThis()(); // "doing this"/"doing that" 
関連する問題