通常(常にではないにしても)、jQueryでクリックなどのJSイベントにコールバックを追加できる場合、コールバック関数でthis
、イベントをトリガーしたDOM要素に「意味」を変更します。
これは非常に便利ですが、次の例のように、jsでOOPコードを記述するときに邪魔になります。
function MyClass() {}
MyClass.prototype = {
init: function() {
$("#someSpan").click(this.doSomething);
},
doSomething: function() {
alert("Here 1");
this.test();
return false;
},
test: function() {
alert("Here 2");
}
}
この例でthis.test()
は、は機能this
しません。これは、上のインスタンスではMyClass
なく、代わりにjQuery DOM要素(スパン)であるためです。
私の質問は次のとおりです。このパターンを使用してJSでOOPコードを記述し続け、jQueryも使用する方法はありますか?そして:this
最初の引数と同じくらい簡単にjQuery DOM要素を送信できるのに、なぜjQueryはコールバック関数で変更されるのですか?