Was ist der Unterschied zwischen window.setTimeout () und setTimeout ()?

8

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?

    
user3073240 06.12.2013, 09:32
quelle

5 Antworten

22

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.

    
Oswald 06.12.2013 09:54
quelle
4

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.

    
Madara Uchiha 06.12.2013 09:34
quelle
2

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.

    
Luca Rainone 06.12.2013 10:06
quelle
0

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?

    
Alex Shilman 06.12.2013 09:46
quelle
0

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.

    
dhilt 17.12.2017 13:01
quelle

Tags und Links