Heim > Web-Frontend > js-Tutorial > Was ist der Unterschied zwischen den JavaScript-Methoden „call()', „apply()' und „bind()'?

Was ist der Unterschied zwischen den JavaScript-Methoden „call()', „apply()' und „bind()'?

Linda Hamilton
Freigeben: 2024-12-02 15:10:14
Original
975 Leute haben es durchsucht

What's the Difference Between JavaScript's `call()`, `apply()`, and `bind()` Methods?

Die Unterschiede zwischen den Methoden call(), apply() und bind() verstehen

In JavaScript müssen Entwickler häufig den Ausführungskontext von a festlegen Funktion. Die Methoden call() und apply() dienen diesem Zweck und ermöglichen die Änderung des Schlüsselworts this einer Funktion. Eine andere Methode, bind(), bietet jedoch eine andere Funktionalität.

call() vs. apply()

call() und apply() haben einen gemeinsamen Zweck : Eine Funktion sofort ausführen, während ein bestimmter Kontext festgelegt wird (dies). Sie unterscheiden sich jedoch in der Art und Weise, wie Argumente übergeben werden: call() akzeptiert Argumente einzeln, während apply() ein einzelnes Array von Argumenten erwartet. Dieser Unterschied wird im bereitgestellten Codebeispiel dargestellt:

// call()
obj.getX.call(obj);

// apply()
obj.getX.apply(obj);
Nach dem Login kopieren

bind()

Im Gegensatz zu call() und apply() wird bind() nicht für verwendet sofortiger Funktionsaufruf. Stattdessen wird eine neue Funktion mit dem angegebenen Kontext vorab gebunden zurückgegeben. Diese gebundene Funktion kann später ohne zusätzliche Kontextänderung aufgerufen werden. Das Codebeispiel demonstriert dieses Verhalten:

// bind()
// The this keyword of the bound function is locked to obj
var boundX = obj.getX.bind(obj);
boundX(); // Returns 81
Nach dem Login kopieren

Wann sollte bind() verwendet werden?

Verwenden Sie bind(), wenn Sie eine Funktion mit einem voreingestellten Kontext für erstellen möchten zukünftige Ausführung. Dies erweist sich besonders bei der Ereignisverarbeitung als nützlich, wo Sie sicherstellen, dass der entsprechende Kontext für asynchrone Rückrufe und Ereignisse beibehalten wird. Das bereitgestellte Codebeispiel veranschaulicht diesen Anwendungsfall:

function MyObject(element) {
    this.elm = element;

    element.addEventListener('click', this.onClick.bind(this), false);
};
Nach dem Login kopieren

In diesem Beispiel ist die onClick-Methode an die MyObject-Instanz gebunden, sodass beim Eintreten des Klickereignisses das Schlüsselwort this in der onClick-Funktion auf verweist richtige Instanz.

Fazit

Während call() und apply() einen sofortigen Funktionsaufruf mit Kontextänderung ermöglichen, bind() zeichnet sich dadurch aus, dass es Funktionen für die zukünftige Ausführung in einem vorgegebenen Kontext vorbereitet. Durch das Verständnis der Nuancen dieser Methoden können Entwickler Funktionskontexte in verschiedenen Szenarien effektiv verwalten.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den JavaScript-Methoden „call()', „apply()' und „bind()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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