Warum unterscheidet sich der Kontext in diesen beiden Ereignishandlern?
Dies ist eine grundlegende Frage, aber ich kann nicht herausfinden, warum der Kontext (der 'this'-Zeiger) im zweiten Ereignishandler richtig und im ersten falsch ist.
Ich habe diese einfache Konstruktorfunktion, um das Objekt myNotifier zu erstellen:
function Notifier ( message ) {
this.message = message;
this.saySomething = function () {
alert( "I say:" + this.message);
}
}
myNotifier = new Notifier(" HELLO!");
Dann benutze ich diemyNotifier.saySomething()
Methode als Eventhandler für CLICK auf zwei Buttons:
$(".button1").click( myNotifier.saySomething );
$(".button2").click( function () { myNotifier.saySomething()});
Der erste zeigt: "Ich sage: undefined" Der zweite zeigt: "Ich sage: HALLO"
Ich verstehe, dass der Kontext (dies) nicht das ursprüngliche Objekt ist, wenn die Methode aufgerufen wird, aber warum ist er korrekt, wenn eine Funktion für die zweite Schaltfläche aufgerufen wird?