/ /クラスを使用するときにjqueryクリックイベントで関数を呼び出す-jquery、class

クラスを使用しているときにjqueryのclickイベントで関数を呼び出す - jquery、class

私はこれを持っていると言ってみましょう:

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();
};

私はこれを行うための他の/より良い方法があると確信していますが、私はそれがうまくいくことを知っています。