Heim >Web-Frontend >js-Tutorial >Javascript „call()' & „apply()' vs. „bind()': Wann sollten Sie welches verwenden?
Javascript: call() & apply() vs bind() Revisited
Während call() und apply() uns Änderungen ermöglichen Um den Kontext einer Funktion zu bearbeiten und Argumente manuell oder als Array zu übergeben, bietet die bind()-Methode einen einzigartigen Ansatz.
Wann zu verwenden bind()
Bind ist besonders nützlich, wenn Sie eine Funktion mit einem vordefinierten Kontext für die spätere Ausführung erstellen müssen. Im Gegensatz zu call() oder apply(), die die Funktion sofort aufrufen, gibt bind eine neue Funktion mit dem angegebenen Kontextsatz zurück.
Das folgende Beispiel zeigt den Unterschied:
var obj = { x: 81, getX: function() { return this.x; } }; alert(obj.getX.bind(obj)()); // 81 alert(obj.getX.call(obj)); // 81 alert(obj.getX.apply(obj)); // 81
Hier Beispielsweise erstellt bind() eine neue Funktion, deren Kontext bei der Ausführung immer auf das Objekt obj gesetzt ist. Dies ist besonders wertvoll bei Ereignis-Listenern, bei denen der Funktionskontext mehrdeutig werden kann.
Anwendungsfälle
Beispiel:
function MyObject(element) { this.elm = element; element.addEventListener('click', this.onClick.bind(this), false); } MyObject.prototype.onClick = function(e) { var t = this; // do something with [t]... // Without bind, the context of this function would be different. };
Fazit
Mit Bind können Sie Funktionen mit vordefiniertem Kontext erstellen Dies macht es besonders nützlich bei der Ereignisbehandlung, der asynchronen Programmierung und anderen Szenarien, in denen die Aufrechterhaltung des Kontexts von entscheidender Bedeutung ist. Während call() und apply() einen sofortigen Funktionsaufruf ermöglichen, gibt bind eine Funktion zur späteren Ausführung mit einem festen Kontext zurück.
Das obige ist der detaillierte Inhalt vonJavascript „call()' & „apply()' vs. „bind()': Wann sollten Sie welches verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!