Aufrufmethoden in JavaScript: Erkunden von apply() vs. call()
Beim Aufrufen von Funktionen in JavaScript stehen Ihnen zwei primäre Methoden zur Verfügung zur Verfügung: apply() und call(). Mit beiden können Sie Funktionen mit einem angegebenen this-Wert ausführen, sie unterscheiden sich jedoch in der Art und Weise, wie Argumente übergeben werden.
apply(thisValue, argumentsArray)
- Konstrukte ein Array aus dem bereitgestellten ArgumentsArray.
- Ruft die Funktion mit dem angegebenen thisValue und den Elementen des Arrays als einzelne Elemente auf Argumente.
- Beispiel:
const func = function() {
console.log("Hello world!");
};
func.apply(null, ["John", 35]); // Invokes "Hello world!" and logs "John" and 35.
call(thisValue, arg1, arg2, ...argN)
- Behandelt die Argumente als einzelne Parameter.
- Ruft die auf Funktion mit dem angegebenen thisValue und den als separate Werte bereitgestellten Argumenten.
- Beispiel:
func.call(null, "John", 35); // Invokes "Hello world!" and logs "John" and 35.
Mnemonik:
- Anwenden: A für eine Reihe von Argumente.
- Aufruf: C für durch Kommas getrennte Argumente.
Leistungsunterschiede:
- Es gibt im Allgemeinen vernachlässigbare Leistungsunterschiede zwischen apply() und call().
- Allerdings apply() kann bei der Verarbeitung einer großen Anzahl von Argumenten etwas schneller sein.
Beste Anwendungsfälle:
-
Verwenden Sie apply( ): Wenn Sie ein Array von Argumenten haben, das Sie an eine Funktion übergeben möchten, insbesondere wenn die Anzahl der Argumente unbekannt ist Advance.
-
Verwenden Sie call():Wenn Sie einzelne Argumente an eine Funktion übergeben und mehr Kontrolle über deren Reihenfolge haben möchten.
ES6 Ergänzungen:
- In ES6 können Sie den Spread-Operator mit call() verwenden, um ein Array in einzelne zu verteilen Argumente.
- Beispiel:
func.call(null, ...["John", 35]); // Same as func.apply(null, ["John", 35]).
Das obige ist der detaillierte Inhalt vonJavaScript „apply()' vs. „call()': Wann sollte ich welches verwenden?. 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