Orlok: Frage zum Wiki-Artikel „JavaScript“

Beitrag lesen

problematische Seite

Hi Gunnar

Eine Frage hätte ich dazu noch. Geht:

lightsDecrementButton.addEventListener('click', () => {
	lightsInputElement.stepDown();
});

Geht nicht:

lightsDecrementButton.addEventListener('click', lightsInputElement.stepDown);

Warum nicht?

Weil die Bindung an ein Kontextobjekt (this) erst beim Aufruf einer Funktion erfolgt. Wenn du die Funktion über ein Objekt referenzierst, ohne sie aufzurufen, dann hast du nur einen Zeiger auf die Funktion, aber die Verknüpfung mit dem Objekt ist verloren gegangen.

Deshalb musst du die Funktion entweder explizit als Methode aufrufen, wie in deinem ersten Beispiel, oder mittels bind eine Funktion erzeugen, bei der this an das gewünschte Objekt gebunden ist.

Viele Grüße,

Orlok