以下は、私がここで質問する原因となっている状況を示す抽象的な JavaScript コード サンプルです。
function className (){
var private_variable = 0;
function privateMethod(){
// Some irrelevant code.
};
this.privilegedMethod = function (){
// Some relevant code to determine if private variable needs to be modified.
private_variable+=val; // Modifies private variable.
};
this.init = function () {
$(window).keydown(function (key) {
if (key.which == 13) {
privateMethod(); // Call to private method works fine.
this.privilegedMethod(); // 'this' references Window object,
// not this class method as expected.
}
});
};
};
私の質問は - それが適用される Window オブジェクトではなく、そのクラスへの this.privilegedMethod() 参照を呼び出すことができる別の方法はありますか?
または、機能を維持しながらコードを再構築する方法を提案してください。主要なイベントはグローバルにリッスンされ、プライベート変数を変更する方法はクラス外でアクセスできますが、プライベート変数自体はそうではありません。
PS特権メソッドへの呼び出しをプライベート内に配置しても、何も変わりませんでした。