私はこれを持っていると言ってみましょう:
test = function() {
this.init = function() {
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
/*
Now, if I wanted it to call function "dosomething" defined in the class, how would I do that? this.dosomething() obviously doesn"t work.
*/
});
}
this.dosomething = function() {
alert("Did it!");
}
}
var _go = new test();
_go.init();
回答:
回答№1は1クラスへの参照を失う前に、コンテキストを設定できます。
test = function() {
var context = this;
init = function() {
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
context.dosomething();
});
}
dosomething = function() {
alert("Did it!");
}
}
回答№2については2
「dosomething」呼び出しを外部関数のjavascript変数にカプセル化し、内部関数で参照します。
this.init = function() {
var doSomething = this.doSomething;
$("#someElement").html("Hey!").mousedown(function() {
$(this).html("Clicked");
doSomething();
});
}
これにより、内部関数が外部関数の変数への参照を保持しているクロージャが作成されます。
回答№3の場合は0
事前にテストを新しいfunction()として宣言します。
test = new function() {};
test.init = function() {
test.foo();
};
私はこれを行うための他の/より良い方法があると確信していますが、私はそれがうまくいくことを知っています。