dedlfix: Frage zum Wiki-Artikel „JavaScript“

Beitrag lesen

problematische Seite

Tach!

oder mittels bind eine Funktion erzeugen, bei der this an das gewünschte Objekt gebunden ist.

Wie würde das im konkreten Fall aussehen?

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

oder auch

lightsDecrementButton.addEventListener('click',
	HTMLInputElement.prototype.stepDown.bind(lightsInputElement));

Aber bleib lieber bei deiner "Geht"-Variante. Die lässt sich direkt lesen. Bei bind() muss man die Arbeitsweise von bind() kennen, um das Konstrukt zu verstehen. Und es gibt hier keine Notwendigkeit, eine Bindung erst zur Laufzeit zu erstellen.

In der ersten Variante erzeugt der Teil lightsInputElement.stepDown zunächst eine ungebundene Referenz auf die Funktion, nur damit bind() die Bindung wiederherstellt. Der Autor gibt dem Leser erstmal eine Knobelaufgabe mit, das Konstrukt und den Sinn dahinter zu verstehen. Der ist hier nicht wirklich vorhanden, weil der Aufruf auch gleich gebunden hätte stattfinden können.

Für die zweite Variante bringt man noch zusätzlich den/einen Prototypen ins Spiel. Das ist eine technische Notwendigkeit, um das bind() nutzen zu können, und wäre dann nötig, wenn lightsInputElement die Methode stepDown nicht hätte. Fachlich spricht nichts dafür, das für den vorliegenden Anwendungsfall so umständlich zu lösen.

dedlfix.