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

时间:2012-03-28 08:23:20

标签: javascript

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

有什么区别?

6 个答案:

答案 0 :(得分:24)

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

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

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

答案 1 :(得分:13)

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

正如您所注意到的那样,

设置 window.locationwindow.location.href的行为方式相同,因为很久以前它就构建在JavaScript语言中。在此question about setting window.location中阅读更多内容。

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

答案 2 :(得分:3)

window.location之外,

href还有其他属性,但如果您为window.location分配了一个网址,则会重定向。

您可以在MDN中看到所有属性(例如searchprotocolhash,...)

答案 3 :(得分:2)

检查this old MDN article

  

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

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

答案 4 :(得分:0)

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

其中

window.location 属性表示窗口对象的当前位置,如果更改此位置,则会重定向。

答案 5 :(得分:-2)

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

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