358 Stimmen

Javascript: Einstellung von location.href gegen location

Wann würden Sie die location zu einer URL-Zeichenkette gegenüber der Einstellung location.href ?

location = "http://www.stackoverflow.com";

gegen

location.href = "http://www.stackoverflow.com";

Mozilla-Entwickler-Netzwerk-Referenz

293voto

bobince Punkte 512550

Sie können Folgendes einstellen location direkt, weil sie etwas kürzer ist. Wenn Sie sich kurz fassen wollen, können Sie normalerweise das window. auch.

URL-Zuordnungen zu beiden location.href y location sind in JavaScript 1.0, also in Netscape 2, definiert und wurden seitdem in jedem Browser implementiert. Entscheiden Sie sich also für den Browser, der Ihnen am besten gefällt.

151voto

psychotik Punkte 36639

Selbst wenn beides funktioniert, würde ich Letzteres verwenden. location ist ein Objekt, und die Zuweisung einer Zeichenkette an ein Objekt ist nicht gerade förderlich für die Lesbarkeit oder die Wartung.

65voto

Kirby L. Wallace Punkte 781

Wie bereits gesagt wurde, location ist ein Objekt . Aber diese Person schlug vor, eines von beiden zu verwenden. Es ist jedoch besser, die .href Version.

Objekte haben Standardeigenschaften, die, wenn nichts anderes angegeben ist, vorausgesetzt werden. Im Fall der location Objekt hat es eine Eigenschaft namens .href . Und wenn Sie bei der Zuweisung KEINE Eigenschaft angeben, wird standardmäßig "href" angenommen.

~~

Das ist alles gut und schön, bis sich eine spätere Objektmodellversion ändert und es entweder keine Standardeigenschaft mehr gibt oder die Standardeigenschaft geändert wird. Dann bricht Ihr Programm unerwartet ab.

~~

Wenn Sie meinen href sollten Sie angeben href .

24voto

Dovev Hefetz Punkte 1216

Vor ein paar Jahren, location hat bei mir im IE nicht funktioniert und location.href (und beide funktionierten auch in anderen Browsern). Seitdem habe ich immer nur verwendet location.href und hatte nie wieder Probleme. Ich kann mich nicht mehr erinnern, welche Version des IE das war.

20voto

Gras Double Punkte 14944

Ein Unterschied ist jedoch zu beachten.

Angenommen, Sie möchten eine URL unter Verwendung der aktuellen URL erstellen. Der folgende Code wird Sie tatsächlich umleiten, da er nicht die String.replace sondern Location.replace :

nextUrl = window.location.replace('/step1', '/step2');

Die folgenden Codes funktionieren:

// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');

// href property
nextUrl = window.location.href.replace('/step1', '/step2');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X