Heim >Web-Frontend >Front-End-Fragen und Antworten >Was ist der Unterschied zwischen „call' und „apply' in Javascript?

Was ist der Unterschied zwischen „call' und „apply' in Javascript?

WBOY
WBOYOriginal
2022-01-28 15:24:242426Durchsuche

In JavaScript haben die Methode call() und die Methode apply() die gleiche Funktion. Der Unterschied liegt in der Art und Weise, wie Parameter empfangen werden. Bei Verwendung der Methode call() müssen die an die Funktion übergebenen Parameter einzeln aufgelistet werden 1. Bei Verwendung von apply() wird der Funktion das Parameterarray übergeben.

Was ist der Unterschied zwischen „call' und „apply' in Javascript?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, JavaScript-Version 1.8.5, Dell G3-Computer.

Was ist der Unterschied zwischen call und apply in Javascript?

Die call()-Methode ruft eine Funktion mit einem angegebenen Wert und separat bereitgestellten Parametern (Liste der Parameter) auf.

Hinweis: Die Funktion dieser Methode ähnelt der apply()-Methode. Der einzige Unterschied besteht darin, dass die call()-Methode eine Liste mit mehreren Parametern akzeptiert, während die apply()-Methode ein Array mit mehreren Parametern akzeptiert.

 Syntax

fun.call(thisObj[, arg1[, arg2[, ...]]])

  Definition: Rufen Sie eine Methode eines Objekts auf, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.

  Beschreibung:

   Mit der Aufrufmethode kann eine Methode anstelle eines anderen Objekts aufgerufen werden. Die Aufrufmethode ändert den Objektkontext einer Funktion vom Anfangskontext in das durch thisObj angegebene neue Objekt.

   Wenn der Parameter thisObj nicht angegeben wird, wird das globale Objekt als thisObj verwendet.

 Parameter

  thisObj

  Dieser Wert wird angegeben, wenn die Fun-Funktion ausgeführt wird. Es ist zu beachten, dass der angegebene this-Wert nicht unbedingt der tatsächliche this-Wert ist, wenn die Funktion ausgeführt wird. Wenn sich die Funktion im nicht-strikten Modus befindet, zeigt der als null und undefiniert angegebene this-Wert automatisch auf das globale Objekt (Browser). das Fensterobjekt), und dieses, dessen Wert ein Grundwert (Zahl, Zeichenfolge, boolescher Wert) ist, zeigt auf das automatische Umbruchobjekt des Grundwerts.

  arg1, arg2, ...

  Angegebene Parameterliste.

Rückgabewert

Das Rückgabeergebnis enthält den angegebenen Wert und die angegebenen Parameter.

apply() Die Methode

apply() ruft eine Funktion mit einem angegebenen Wert und Argumenten auf, die als Array (oder arrayähnliches Objekt) bereitgestellt werden.

Syntax

fun.apply(thisObj, [argsArray])

 Definition: Wenden Sie eine Methode eines Objekts an, um das aktuelle Objekt durch ein anderes Objekt zu ersetzen.

 Hinweis:

  Wenn argsArray kein gültiges Array oder kein Argumentobjekt ist, wird ein TypeError verursacht.

   Wenn weder argArray noch thisObj bereitgestellt werden, wird das Global-Objekt als thisObj verwendet und es können keine Parameter übergeben werden.

Parameter

 thisObj

  Dieser Wert wird angegeben, wenn die Fun-Funktion ausgeführt wird. Es ist zu beachten, dass der angegebene Wert nicht unbedingt der tatsächliche Wert ist, wenn die Funktion ausgeführt wird. Wenn sich die Funktion im nicht-strikten Modus befindet, zeigt sie automatisch auf das globale Objekt, wenn der angegebene Wert null oder undefiniert ist (im Browser ist es ein Fensterobjekt), und dieses, dessen Wert ein Grundwert (Zahl, Zeichenfolge, boolescher Wert) ist, zeigt auf das automatische Umbruchobjekt des Grundwerts.

  argsArray

   Ein Array oder arrayähnliches Objekt, dessen Array-Elemente als separate Parameter an die Fun-Funktion übergeben werden. Wenn der Wert dieses Parameters null oder undefiniert ist, bedeutet dies, dass keine Parameter übergeben werden müssen. Ab ECMAScript 5

   ist es möglich, Array-ähnliche Objekte zu verwenden.

Zusammenfassung

Beide haben die gleiche Funktion, sie binden beide obj (d. h. this) an thisObj. Zu diesem Zeitpunkt hat thisObj die Eigenschaften und Methoden von obj. Mit anderen Worten: thisObj „erbt“ die Eigenschaften und Methoden von obj. Der einzige Unterschied besteht darin, dass apply Array-Parameter akzeptiert, während call kontinuierliche Parameter akzeptiert.

Die call()-Methode und die apply()-Methode haben die gleiche Funktion. Der Unterschied zwischen ihnen liegt in der Art und Weise, wie sie Parameter empfangen. Bei call() ist der erste Parameter der Wert von this, der sich nicht ändert. Die übrigen Parameter werden direkt an die Funktion übergeben. (Bei Verwendung der call()-Methode müssen die an die Funktion übergebenen Parameter einzeln aufgelistet werden. Bei Verwendung von apply() wird das Parameterarray an die Funktion übergeben.) Der folgende Code erklärt:

function add(c, d){
    return this.a + this.b + c + d;
}
var o = {a:1, b:3};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34 

Sowohl call als auch apply sind Wird verwendet, um etwas zu ändern. Der Kontext, wenn eine Funktion ausgeführt wird, ist der Kontext. Mit anderen Worten, es dient dazu, den Zeiger davon innerhalb des Funktionskörpers zu ändern. Denn JavaScript-Funktionen haben die Konzepte „Definitionskontext“, „Laufzeitkontext“ und „Kontext kann geändert werden“.

Die beiden Funktionen sind genau gleich, aber die Art der Parameterübernahme ist unterschiedlich. Beispielsweise gibt es eine Funktion fun, die wie folgt definiert ist:

var fun = function(arg1, arg2) {};

kann über fun.call(this, arg1, arg2); oder fun.apply(this, [arg1, arg2]); aufgerufen werden. Darunter ist dies der Kontext, den Sie angeben möchten, der ein beliebiges JavaScript-Objekt sein kann (alles in JavaScript ist ein Objektaufruf, der die Parameter der Reihe nach übergeben muss, während „Apply“ die Parameter in ein Array einfügt).

In JavaScript ist die Anzahl der Parameter einer Funktion nicht festgelegt. Wenn Ihre Parameter die Anzahl eindeutig kennen, verwenden Sie im Hinblick auf die geltenden Bedingungen den Aufruf. Wenn Sie sich nicht sicher sind, verwenden Sie die Funktion „Anwenden“ und übertragen Sie die Parameter dann in die Funktion array Übergeben Sie es. Wenn die Anzahl der Parameter unsicher ist, können alle Parameter innerhalb der Funktion über das Argumentarray durchlaufen werden.

Verwandte Empfehlungen: Javascript-Lern-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „call' und „apply' in Javascript?. 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