Tach!
oder mittels
bind
eine Funktion erzeugen, bei derthis
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.