これは基本的な質問ですが、コンテキスト (「this」ポインター) が 2 番目のイベント ハンドラーでは正しく、最初のイベント ハンドラーでは正しくない理由がわかりません。
オブジェクト myNotifier を作成するためのこの単純なコンストラクター関数があります。
function Notifier ( message ) {
this.message = message;
this.saySomething = function () {
alert( "I say:" + this.message);
}
}
myNotifier = new Notifier(" HELLO!");
次に、このmyNotifier.saySomething()
メソッドを 2 つのボタンの CLICK のイベント ハンドラーとして使用します。
$(".button1").click( myNotifier.saySomething );
$(".button2").click( function () { myNotifier.saySomething()});
1 つ目は、「I say: undefined」を示しています。2 つ目は、「I say: HELLO」を示しています。
メソッドを呼び出すときにコンテキスト (this) が元のオブジェクトではないことは理解していますが、2 番目のボタンの関数内で呼び出すときに正しいのはなぜですか?
テストするjsfiddle