繁体   English   中英

window.location和location.href之间的区别

[英]Difference between window.location and location.href

我对window.locationlocation.href之间的区别感到困惑。 两者似乎都以同样的方式行事。

有什么不同?

window.location是一个对象,它包含有关当前文档位置(主机,href,端口,协议等)的所有信息。

location.href是window.location.href的简写(你从全局对象 - 窗口调用位置,所以这是window.location.href),这只是一个包含当前网站完整URL的字符串。

当您为它们分配URL时,它们的行为相同 - 它们将重定向到您指定的页面,但是当您打开浏览器控制台(firebug或开发人员工具)并编写window.locationlocation.href时,您可以看到它们之间的差异。 。

它们是不同的。 window.location是一个包含属性href对象 ,它是一个字符串

正如您所注意到的那样, 设置 window.locationwindow.location.href行为方式相同,因为它很久以前就构建在JavaScript语言中。 在这个关于设置window.location的问题中阅读更多内容

获取 window.locationwindow.location.href行为有所不同,因为前者是一个对象而后者是一个字符串。 如果运行indexOf()toLowerCase()等字符串函数,则必须使用window.location.href

window.location除了href之外还有其他属性,但是如果你为window.location分配一个它将重定向的URL。

你可以在MDN中看到它的所有属性(比如searchprotocolhash ......)

查看这篇旧的MDN文章

位置对象具有返回当前URL的toString方法。 您还可以为window.location分配一个字符串。 这意味着您可以使用window.location,就像在大多数情况下它是一个字符串一样。 有时,例如,当您需要在其上调用String方法时,您必须显式调用toString:

window只是包含多个属性的全局对象,其中一个属性是location location也有属性,其中一个是href location.href只是window.location.href

location.href属性返回当前页面的完整URL。

在哪里

window.location属性表示窗口对象的当前位置,如果更改它,您将被重定向。

您正在访问同一个对象。 它是某种捷径。 如果你使用firebug(或类似的)来改变它的“hash”属性,你会发现它在两个地方都被改变了。

从技术上讲,您的默认范围是窗口对象,因此当您访问“location.href”时,您将访问window.location.href。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM