molily: this überflüssig?

Beitrag lesen

Hallo,

Jetzt kann ich mir dieses Verhalten wenigstens erklären, auch wenn ich meine, dass „Durchreichen“ des Events schon ein Mal in einem anderen Kontext gelesen zu haben.

Äh... Die Scope Chain beim Auflösen von Objektnamen und das Aufsteigen von Ereignissen (Bubbling) sind zwei völlig unterschiedliche Dinge. ;) Der Mechanismus der Scope Chain und die Bedeutung von »this« beim Event-Handling hängen aber zusammen.

Das Aufsteigen zeigt sich im Beispiel nicht, weil man das click-Ereignis direkt am Zielobjekt (beim a-Elementknoten) verarbeitet, bei dem es passierte.
»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.
<p onclick="alert(this)"><span>klick mich</span></p>
Wenn man auf den Text klickt, passiert ein click-Ereignis beim span-Element. Das Ereignis steigt auf zum p-Element, wo der onclick-Handler ausgelöst wird. this zeigt immer auf das Elementknotenobjekt, dessen Handler gerade ausgeführt wird. Es entspricht daher Eventobjekt.currentTarget aus DOM Events.

Wenn man <element onevent="JavaScript-Code">...</element> notiert, dann ist onevent aus Sicht von JavaScript ein Funktionsobjekt, das am Elementknotenobjekt hängt. Wenn man in einer solchen Funktion einen Objektnamen notiert, ist das Objekt, an dem das Funktionsobjekt hängt, immer this und somit das erste Objekt in der Scope Chain, bei dem gesucht wird. Deshalb sollte »objektname« in einer Handlerfunktion identisch zu »this.objektname« und identisch zu »Eventobjekt.currentTarget.objektname« sein.

Mathias