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.
Nach dem Login kopieren
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.
Nach dem Login kopieren
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]).
Nach dem Login kopieren
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!