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?

A jsfiddle zum testen

Antworten auf die Frage(2)

Ihre Antwort auf die Frage