Kontextbindung mit der bind-Methode in JavaScript
Die nächste Methode bind erlaubt es,
den Kontext dauerhaft an eine Funktion zu binden.
Diese Methode gibt eine neue Funktion zurück,
in der this einen fest definierten Wert
hat.
Schauen wir uns ein Beispiel an.
Nehmen wir an, wir haben ein Input-Feld:
<input id="elem" value="text">
Nehmen wir an, der Verweis auf dieses Input-Feld ist in der Variable
elem gespeichert:
let elem = document.querySelector('#elem');
Nehmen wir außerdem an, wir haben die folgende Funktion
func:
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
Lassen Sie uns mit bind eine neue
Funktion erstellen, die eine Kopie der Funktion func ist,
aber this darin wird immer gleich elem sein:
let newFunc = func.bind(elem);
Jetzt liegt in der Variable newFunc eine
Funktion. Rufen wir sie auf, indem wir den ersten
Parameter '1' und den zweiten '2' übergeben
(ich erinnere daran, dass in elem ein Input-Feld mit value
gleich 'text' liegt):
newFunc('1', '2');
Fassen wir alles zusammen:
let elem = document.getElementById('elem');
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
let newFunc = func.bind(elem);
newFunc('1', '2'); // gibt 'text12' aus
Es ist nicht notwendig, das Ergebnis der
bind-Methode in eine neue Funktion newFunc
zu schreiben, man kann einfach func überschreiben.
Danach wird func die gleiche Funktion sein wie
zuvor, aber mit fest gebundenem this:
func = func.bind(elem);
Gegeben sei der folgende Code:
<input id="elem" value="hello">
let elem = document.getElementById('elem');
function func(name, surname) {
console.log(this.value + ', ' + name + ' ' + surname);
}
// schreiben Sie hier die Konstruktion mit bind()
func('John', 'Smit'); // hier sollte 'hello, John Smit' ausgegeben werden
func('Eric', 'Luis'); // hier sollte 'hello, Eric Luis' ausgegeben werden
Schreiben Sie an der angegebenen Stelle die Konstruktion mit
der Methode bind so, dass this innerhalb
der Funktion func immer auf das Input-Feld
aus der Variable elem zeigt.