.call()
setzt den Wert this
und ruft dann die Funktion mit den Argumenten auf, die Sie an .call()
übergeben haben. Sie verwenden .call()
, anstatt die Funktion direkt aufzurufen, wenn Sie den this
-Wert innerhalb der aufgerufenen Funktion setzen möchten, anstatt ihn auf das zu setzen, was Javascript normalerweise festlegen würde.
.apply()
ist eine Schwesterfunktion. Es kann auch den this
-Wert setzen, und es kann Argumente in einem Array verwenden, damit es verwendet werden kann, wenn Sie versuchen, eine variable Argumentliste von einem anderen Funktionsaufruf zu übergeben oder wenn Sie eine programmatische Argumentliste konstruieren unterschiedliche Anzahl von Argumenten abhängig von der Situation.
Yehuda Katz hat eine gute Beschreibung von JavaScript's Function#call
Methode. Sein Writeup sollte Ihre Frage beantworten und daneben viele weitere Fragen.
Wenn Sie eine Funktion direkt aufrufen, verwenden Sie die allgemeine Syntax:
%Vor% Dann ist this
innerhalb des Funktionsaufrufs egal was this
außerhalb des Funktionsaufrufs ist. Im Browser ist this
außerhalb von Funktionsaufrufen standardmäßig window
. Innerhalb des Funktionsaufrufs wie oben ist this
auch standardmäßig window
.
Wenn Sie eine Funktion mit der Methodenaufrufsyntax aufrufen:
%Vor% Dann ist this
innerhalb des Funktionsaufrufs das Objekt links von der ganz rechten Periode: in diesem Fall bar
.
Wir können diese Situation mit call
simulieren.
Wenn Sie eine Funktion außerhalb eines Objekts einrichten und sie mit this
innerhalb des auf ein Objekt gesetzten Funktionsaufrufs aufrufen möchten, können Sie Folgendes tun:
Sie können diese Technik auch verwenden, um Argumente zu übergeben:
%Vor%Tags und Links javascript call