Event Delegation heißt, einen Listener an einen gemeinsamen Vorfahren zu hängen und über event.target herauszufinden, mit welchem Nachfahren interagiert wurde. Das funktioniert, weil die meisten Events vom Target aus nach oben durch die Vorfahren bubblen. Nutz es für Listen, die sich oft ändern oder groß sind, weil du dir das Anhängen und Aufräumen von Hunderten Listenern sparst. Lass es bei Events, die nicht bubbeln, etwa focus, blur und die meisten Media-Events.
Warum Interviewer das fragen
Das ist ein schneller Test, ob du Capture- und Bubble-Phase verstehst und nicht nur addEventListener auswendig aufrufst. Der Interviewer prüft außerdem Speicherhygiene: wer schon leckende Listener in einer Single Page App debuggt hat, weiß, warum Delegation zählt. Die Nachfragen gehen meist Richtung Events, die nicht bubbeln, Missbrauch von stopPropagation und wie Frameworks ihre eigene synthetische Delegation darauf aufsetzen.
So baust du deine Antwort auf
- Definier es in einem Satz über Bubbling und event.target.
- Nenn den konkreten Gewinn: weniger Listener, funktioniert auch für später hinzugefügte Elemente.
- Markier die Ausnahmen, inklusive Events, die nicht bubbeln.
- Warn davor, dass stopPropagation die Delegation weiter oben zerschießt.
Beispielantwort
Statt einen Click-Listener auf jede Zeile zu setzen, setze ich einen auf den Container, lese event.target und laufe mit closest nach oben zu der Zeile, die mich interessiert. Das funktioniert, weil der Klick von dem, was tatsächlich geklickt wurde, nach oben durch die Vorfahren bubbelt, der Container sieht also alles darunter. Die zwei Gewinne sind, dass ich nicht Hunderte Listener anlege und wieder abreiße, und dass später hinzugefügte Zeilen einfach funktionieren, ohne neu zu binden. Die Haken gehören dazu: focus und blur bubbeln nicht, dafür nehme ich focusin und focusout, und wenn irgendein Code zwischen dem Target und meinem Container stopPropagation aufruft, feuert mein Handler stillschweigend nicht mehr, was ein ehrlich gesagt nerviger Bug zum Aufspüren ist. Ich bin darüber vor allem in einer Tabelle gestolpert, in der eine innere Komponente die Propagation gestoppt hat, um ihr eigenes Menü zu schließen, und damit leise die Zeilenauswahl gekillt hat. Heute bekomme ich Delegation meist gratis vom Framework, ich nutze sie aber weiterhin direkt für große virtualisierte Listen und für alles, was außerhalb des Framework-Trees gerendert wird.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Welche gängigen Events bubbeln nicht, und was nimmst du stattdessen?
- Wie würdest du einen Klick auf ein verschachteltes Element innerhalb der Zeile behandeln?
- Wann ist stopPropagation die richtige Wahl und kein Warnsignal?
Weitere Fragen für Frontend-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen