example - Javascript: Configuración de location.href versus location
window location href login (6)
¿Cuándo establecería la location
en una cadena de URL en location.href
establecer location.href
?
location = "http://www.stackoverflow.com";
vs
location.href = "http://www.stackoverflow.com";
Como ya se ha dicho, la . location
es un objetoPero esa persona sugirió usar cualquiera de los dos. Pero, harás mejor en usar la versión .href
.
Los objetos tienen propiedades predeterminadas que, si no se especifica nada más, se suponen. En el caso del objeto de location
, tiene una propiedad llamada .href
.Y al no especificar CUALQUIER propiedad durante la asignación, asumirá "href" de forma predeterminada.
Todo esto está bien hasta que una versión posterior del modelo de objeto cambie y ya no haya una propiedad predeterminada o se cambie la propiedad predeterminada. Entonces su programa se rompe inesperadamente.
Si te refieres a href
, deberías especificar href
.
Hace un par de años, la location
no me funcionaba en IE y location.href
(y ambas funcionaban en otros navegadores). Desde entonces, siempre he usado location.href
y nunca más tuve problemas. No puedo recordar qué versión de IE era.
Incluso si ambos funcionan, yo usaría este último. location
es un objeto, y asignar una cadena a un objeto no es un buen augurio para facilitar la lectura o el mantenimiento.
Puede establecer la location
directamente porque es un poco más corto. Si está tratando de ser conciso, generalmente puede omitir la window.
también.
Las asignaciones de URL a location.href
y location
están definidas para funcionar en JavaScript 1.0, en Netscape 2, y se han implementado en todos los navegadores desde entonces. Así que haz tu elección y utiliza lo que encuentres más claro.
Solo para aclarar, no puede hacer location.split(''#'')
, la location
es un objeto, no una cadena. Pero puede hacer location.href.split(''#'');
porque location.href
es una cadena.
Una diferencia a tener en cuenta, sin embargo.
Digamos que quieres construir una URL usando la URL actual. De hecho, el siguiente código lo redirigirá, porque no está llamando a String.replace
sino a Location.replace
:
nextUrl = window.location.replace(''/step1'', ''/step2'');
Los siguientes códigos funcionan:
// cast to string
nextUrl = (window.location+'''').replace(''/step1'', ''/step2'');
// href property
nextUrl = window.location.href.replace(''/step1'', ''/step2'');