Heim > Web-Frontend > js-Tutorial > Javascript „call()' & „apply()' vs. „bind()': Wann sollten Sie welches verwenden?

Javascript „call()' & „apply()' vs. „bind()': Wann sollten Sie welches verwenden?

Linda Hamilton
Freigeben: 2024-12-02 00:07:16
Original
226 Leute haben es durchsucht

Javascript `call()` & `apply()` vs. `bind()`: When Should You Use Which?

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
Nach dem Login kopieren

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

  • Ereignis-Listener: Legen Sie fest Kontext von Ereignishandlern, um die korrekte Objektreferenz in asynchronen Rückrufen beizubehalten.
  • Asynchron Rückrufe: Behalten Sie den Kontext der ursprünglichen Funktion in asynchronen Node.js-Rückrufen bei.
  • Currying: Erstellen Sie eine neue Funktion mit einem festen Satz von Argumenten und behalten Sie dabei das Original der Funktion bei Kontext.

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.
};
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage