Ich würde gerne wissen, was der Unterschied zwischen
ist %Vor%und
%Vor%Beide scheinen genau dasselbe zu tun. Wann sollten Sie das eine oder das andere benutzen?
JavaScript wird in einer Umgebung ausgeführt, die durch ein globales Objekt definiert ist. Methoden des globalen Objekts können aufgerufen werden, ohne explizit auf das Objekt zu verweisen (d. H. Ohne die obj.function()
-Notation).
Wenn Sie JavaScript innerhalb des Browsers ausführen, wird das globale Objekt vom Document Object Model (DOM) bereitgestellt. Das globale Objekt des DOM hat eine Methode setTimeout()
. Deshalb können Sie setTimeout()
aufrufen.
Das DOM gibt an, dass das globale Objekt eine Eigenschaft namens window
hat, die ein Verweis auf das globale Objekt ist. Deshalb können Sie window.setTimeout()
und (nach Transitivität) window.window.setTimeout()
, window.window.window.setTimeout()
und (Sie haben es erraten) window.window.window.window.window.window.window.window.window.setTimeout()
aufgerufen haben. Es ist die gleiche Methode des gleichen Objekts.
Wenn wir von browserbasiertem JavaScript sprechen: Kein Unterschied. setTimeout()
lässt einfach window.
weg, was impliziert ist. Der Effekt, den sie haben, ist genau der gleiche.
Es ist eine Wahl des Kodierungsstils und der Vorliebe.
Für JavaScript, das nicht in einem Browser ausgeführt wird, ist das window
-Objekt nicht definiert, daher wird window.setTimeout()
fehlschlagen. setTimeout()
funktioniert jedoch.
Von Ссылка
Das Fensterobjekt repräsentiert das Fenster selbst.
Alle Variablen und Funktionen, die Sie aufrufen, sind also im Objektfenster eingeschlossen. Sie können die Objektreferenz jedoch jedes Mal weglassen, wenn Sie eine Funktion oder eine Variable aufrufen.
Warum das?
Denken Sie an eine Seite mit 2 oder mehr Bildern. Jeder Frame hat sein eigenes window
. Sie können auf eine Variable innerhalb eines Frames von einem anderen Frame aus zugreifen, indem Sie einfach auf das Objekt window
des Ziels zugreifen.
Dies gilt für jede Variable oder Funktion, die als global deklariert wird. Sie gilt auch für native Funktionen wie setTimeout
.
Warum müssen wir dann manchmal explicity window.setTimeout
schreiben?
Wenn Sie sich in einem Bereich befinden und denselben Namen einer nativen Funktion verwenden, können Sie einfach auswählen, welche Funktion verwendet werden soll.
zum Beispiel:
%Vor% Bitte beachten Sie, dass das Objekt window
nur in der Browserumgebung existiert. Das globale Objekt von Node.js
ist global
, wobei window
nicht definiert ist.
Es ist genau dasselbe. Fenster ist implizit, wenn Sie es nicht angeben. Überprüfen Sie mögliche Duplikate:
Muss es sein? setze setTimeout und setInterval mit window object voraus?
Ich hatte ein Problem in Bezug auf dieses Thema. Ich habe versucht, einige Funktionen meines SPA zu einem Teil des serverseitigen Renderprozesses zu machen. Ich habe setTimeout
verwendet, um eine verzögerte Aktion auf der Benutzeroberfläche bereitzustellen. Wenn es auf der Serverseite (NodeJS) funktioniert, wird es auf der Serverseite zu einer verzögerten Aktion ohne Beziehung zur Clientseite. Es ist wegen Browser setTimeout
(sagen window.setTimeout
) ist nicht das gleiche wie NodeJS setTimeout
. Abgesehen von verschiedenen Laufzeitumgebungen, die die Verwendung eines einzelnen setTimeout
sowohl für das clientseitige als auch das serverseitige Rendering verbieten, sind die Implementierungen von Browser und NodeJs setTimeout
sind unterschiedlich, sie haben einen unterschiedlichen Rückgabewert ... Jetzt suche ich nach einem Workaround.
Tags und Links javascript settimeout