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
Linda HamiltonOriginal
2024-12-02 15:10:14910Durchsuche

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);

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

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);
};

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!

Stellungnahme:
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