window.location versus nur Standort
Über das Internet sehe ich eine große Anzahl von JavaScript-Programmierer schreiben window.location
statt nur location
. Ich war neugierig, wenn jemand könnte eine Erklärung zu geben, warum. window
ist das Globale Objekt, und daher ist es überflüssig, - nicht? Ich meine, Sie sehen nicht, was die Leute schreiben window.Math.floor
oder new window.Date()
, so bin ich neugierig, warum es würde angegeben werden, mit location
.
Ich verstehe, dass location
ist als eine "Eigenschaft" des Fensters, das Sie sind, was ich vermute, macht Sinn. Aber auch so sehe ich keinen Grund zu geben Sie die Globale Objekt; es ist nicht möglich, Sie zu überschreiben location
in den ersten Platz, nicht ohne Umleitung der Seite.
So, das ist nur eine Eigenart, die verwendet wurde, für so lange, dass es integriert werden, wie wir JavaScript schreiben, oder gibt es einen greifbaren Grund, Dinge zu tun auf diese Weise? Ich überprüfte Google, aber ach, ich kam mit nichts...
InformationsquelleAutor der Frage Reid | 2011-01-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich benutze immer
window.location
in meinem code für zwei Hauptgründe:window.
Präfix erinnert mich daran, dass die variable global ist und das andere nicht.var location
irgendwo in einem übergeordneten Rahmen (es ist nicht unwahrscheinlich, dass Wort zu verwenden, als variable-name), und Sie würde arbeiten auf, dass statt.Für mich, Klarheit über den Zweck, wenn die Codierung ist sehr wichtig, denn es hilft mir zu vermeiden, schreiben von bugs und dann hilft mir Sie zu finden, wenn ich.
InformationsquelleAutor der Antwort lonesomeday
Teilweise für Sicherheit, falls jemand definiert eine
location
variable irgendwo in der scope-chain. diewindow.location
macht es einen expliziten Verweis auf die Eigenschaft vonwindow
.Beispiel: http://jsfiddle.net/dr6KH/
InformationsquelleAutor der Antwort user113716
Teil der Codierung ist die übersichtlichkeit. Im Gegensatz zu Mathe oder Datum, Ort ist im Prinzip eine Eigenschaft des Fensters, der code wird übersichtlicher. Die "Fenster"." - Präfix sollte idealerweise entfernt werden, für die Verkleinerung.
Sind Sie wahrscheinlich richtig, dass viele der Grund ist historisch. Javascript hat eine umfangreiche Geschichte zu kopieren und einzufügen.
InformationsquelleAutor der Antwort fuzzyTew
Gibt es einen großen Unterschied zwischen
window.location
und die nativeMath
undDate
Objekte, die ist, dassMath
undDate
sind native JavaScript-Objekte, die angegeben sind, existieren als Eigenschaften des globalen Objekts, währendwindow.location
ist eine Eigenschaft derwindow
host-Objekt (ein host-Objekt ist ein Objekt, das einen bestimmten Aspekt der Umwelt, durch die Umwelt, und ist nicht unterliegen den gleichen Regeln, die als native JavaScript-Objekte. Andere host-Objekte enthaltendocument
und alle DOM-element).window
im Browser dient zwei Zwecken: Erstens, als die (angegebenen) ECMAScript-global-Objekt, und der zweite, der als ein host-Objekt mit Informationen über die browser-Umgebung. Für Verwendungen vonwindow
in Ihrer host-Objekt Hubraum, ich bevorzuge eindeutig sein und bieten diewindow.
Präfix: die Tatsache, dasslocation
funktioniert, ohne ist es nur ein Zufall, dass kommt vonwindow
's schizophrener Natur. Auch, wie bereits von anderen beantwortet, das hat auch den Vorteil, schützt Sie in dem Fall, wenn ein andererlocation
variable existiert im aktuellen Kontext.Einen guten Grund für Sie nicht, indem
Date
oderMath
mitwindow.
ist, dass damit erstellte code funktioniert nicht in einem nicht-browser-Umgebung. Andere Umgebungen in der Regel nicht bietenwindow
als ein alias für das Globale Objekt.InformationsquelleAutor der Antwort Tim Down
Es ist nicht immer nur eine Frage des Stils - ich habe versucht, laden Sie die social media buttons asynchron, nachdem das Fenster load-Ereignis durch Anhängen von script-Elementen, um ein fragment, und dann anfügen, dass das fragment in das Dokument. Twitter widgets.js verwendet
location.href
an mehreren stellen und verursachte die folgende Fehlermeldung in IE 8/9: Unerwarteten Aufruf der Methode oder Eigenschaft zugreifen. Ich habe nicht herausgefunden, warum, aber dies geschieht nur, wenn Sie die Seite über einen link von einer anderen Seite. Wenn Sie fügen Sie einfach das Skript-element der Kopf oder die Verwendungwindow.location.href
dies nicht auftreten, so dass es scheint, einige Verrücktheit mit dem IE 8/9 undcreateDocumentFragment()
.Beispiel:
InformationsquelleAutor der Antwort rhurkes
Den
window
Objekt ist der default-namespace arbeiten, solocation
wird gleichwindow.location
.Ich denke, dass mit
location
ist ein bisschen zweideutig, verwenden Siewindow.location
für Klarheit.InformationsquelleAutor der Antwort Jacob Relkin
Lage ist eine Eigenschaft des window-Objekts, so können Sie es durch die Anforderung Fenster.Lage. Aber wenn Sie nicht ein Objekt angeben, wird JavaScript vorausgesetzt, Sie möchten, dass das Fenster-Objekt. Also einfach anfordern Lage ist die gleiche wie ersuchenden Fenster.Lage.
InformationsquelleAutor der Antwort arlomedia
Es ist nur eine Frage des Stils.
Konzeptionell
location
ist eine Eigenschaft derwindow
(das Fenster ist an einer Stelle), im Gegensatz zuMath
oderDate
.InformationsquelleAutor der Antwort SLaks
Sind Sie eigentlich identisch. Technisch ist der "
window
" Objekts IST der gleiche wie der root-Bereich für Javascript-Variablen.InformationsquelleAutor der Antwort Adam Batkin