Hallo,
»this« hat eine Bedeutung beim Event-Handling, siehe http://www.quirksmode.org/js/this.html und http://www.quirksmode.org/js/events_order.html#link10.
Ja, diese Bedeutung ist mir bereits vertraut und ich nutze sie auch wo ich kann, um Funktionen flexibel zu halten. (Also bezieht sich this innerhalb von Funktionen immer auf das window-Objekt.
Nein, this bezieht sich auf das Objekt, an dem das Funktionsobjekt hängt, also dessen Methode die Funktion ist.
(Deshalb mein Beispiel: Ein Event-Handler ist beim traditionellen Event-Handling ein Funktionsobjekt, das an einem Elementknotenobjekt hängt, daher verweist this auf eben dieses Elementknotenobjekt.)
Aber war z. B. im DOM nicht document das oberste Objekt in der Hierarchie?)
Ja. Das oberste Objekt in JavaScript ist aber window. Wenn man function bla () {} im globalen Kontext notiert, ist bla eine Methode des window-Objektes. Daher zeigt this in Funktionen in der Regel, aber nicht notwendigerweise auf window. (In allen anderen Kontexten, bei denen die Funktion nicht ausdrücklich an einem bestimmten Objekt hängt, ist sie zwar nicht eine Methode des window-Objektes, aber was this angeht, gehört sie zu window.)
Man kann natürlich auch document.bla = function () {}; notieren, dann ist this === document in dieser Funktion. Das ist aber eher unüblich.
Mathias