Das erste Argument für Function.prototype.call
ist der Kontext , der den Wert this
für den Ausführungskontext der aufgerufenen Funktion definiert, nichts anderes.
Sie sagen also im Grunde, dass this
sich auf null
bezieht (zumindest im strikten ES5-Modus), aber da Sie auf this
sowieso nicht zugreifen, macht das keinen Unterschied.
Im nicht-strikten Modus kann this
nicht null
sein, daher wird er stattdessen durch das globale Objekt ersetzt.
Wenn Sie .call
oder .apply
mit null
oder undefined
verwenden, wird automatisch der Standardwert this
(normalerweise window
) verwendet, wenn nicht im strikten Modus.
Von MDN (Hervorhebung von mir):
thisArg
Der Wert vonthis
wurde für den Aufruf vonfun
bereitgestellt. Beachten Sie, dass dies möglicherweise nicht der tatsächliche Wert ist, der von der Methode gesehen wird: Wenn die Methode eine Funktion im nicht strikten Moduscode ist, werdennull
undundefined
durch das globale Objekt und ersetzt Primitive Werte werden eingerahmt.
Wenn Sie im strikten Modus sind, ist es tatsächlich null
oder undefined
.
Es ist nicht. NULL gibt in diesem Fall an, an welches Objekt das Schlüsselwort this
gebunden ist. In Ihrer Methode, indem Sie es auf NULL setzen, wird es entweder keine this
variable Bindung haben oder es wird an die Funktion selbst oder das Fenster gebunden.
Da Sie keine Variablen oder Funktionen verwenden, auf die über this
zugegriffen wird, müssen Sie die Aufrufmethode nicht verwenden ... Sie können einfach sum(3,4)
Wie beispielsweise in MDN angegeben, lautet das erste Argument
Der Wert für den Aufruf von [der Methode]. Beachten Sie, dass Dies ist möglicherweise nicht der tatsächliche Wert, der von der Methode gesehen wird: wenn die Methode ist Eine Funktion im nicht strikten Modus Code, null und undefiniert wird ersetzt durch das globale Objekt, und primitive Werte werden eingerahmt.
Wie das MDN erklärt.
thisArg
Der Wert, der für den Aufruf von fun bereitgestellt wird. Beachten Sie, dass dies nicht möglich ist sei der tatsächliche Wert, der von der Methode gesehen wird: wenn die Methode eine Funktion ist Im nicht strikten Moduscode werden null und undefined durch die ersetzt globales Objekt, und primitive Werte werden eingerahmt.
Stellen Sie es einfach durch einen kleinen Code.
%Vor%Im strikten Modus ist dies null. Aber im nicht strikten Modus. Dies ist ein Fenster oder ein globales Objekt.
Tags und Links javascript call