Welchen Zweck hat es, das Fensterobjekt in Javascript zu referenzieren?

7

Jede Eigenschaft des Objekts window ist eine globale Variable. Dies bedeutet, dass Sie so etwas tun können:

%Vor%

Aus diesem Grund habe ich mich immer gefragt, welchen Zweck es hatte, in Code wie diesem auf window zu verweisen.

%Vor%

Wenn Sie window weglassen könnten und Code haben, der genau das Gleiche macht:

%Vor%

Die Verwendung scheint auch inkonsistent zu sein; Ich sehe fast nie window.alert , aber ich werde häufig window.location sehen.

Mögen die Leute es einfach, window zu referenzieren, um ihren Code verständlicher zu machen? Gibt es einen guten Grund dafür, von dem ich nichts weiß?

    
Peter Olson 27.01.2012, 23:57
quelle

3 Antworten

5

Eine Situation, in der es hilfreich ist, explizit zu sein, ist, dass es innerhalb einer Funktion, die eine globale Variable ändern soll, sofort klar ist. Zum Beispiel:

%Vor%

Hat jemand vergessen, test mit var zu deklarieren? Oder ist diese absichtliche Änderung eines globalen? Vergleichen Sie:

%Vor%

Jetzt ist sofort klar, was beabsichtigt ist. Natürlich, Globals sollten in erster Linie vermieden werden, aber Sie verstehen, was ich meine.

    
Wayne Burkett 28.01.2012, 00:12
quelle
2

window ist implizit, aber es ist gute Code-Praxis, Mehrdeutigkeit wo möglich zu vermeiden.

    
Silas Hansen 28.01.2012 00:01
quelle
2

Ich denke, es wird im Allgemeinen verwendet, um mögliche Zusammenstöße mit anderen Variablen in einer umschließenden Schließung zu vermeiden. Auch Style-Checker wie jslint werden Fehler auslösen, wenn Sie auf globale Eigenschaften ohne explizites Objekt zugreifen (mit Ausnahme von bekannten Eigenschaften wie window selbst.)

Wenn Sie in einem Browser in mehrere Fenster gelangen, z. B. mit Iframes usw., müssen Sie möglicherweise explizit einen Verweis auf das Fensterobjekt weitergeben. (Und wenn Sie sich wirklich für die Details interessieren, sind das Fensterobjekt oder zumindest Verweise darauf sehr speziell und können nicht einmal in Standardjavascript beschrieben werden.)

    
smparkes 28.01.2012 00:02
quelle

Tags und Links