我对window.location
和location.href
之间的区别感到困惑。两者似乎都以同样的方式行事。
有什么区别?
答案 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.location
和window.location.href
的行为方式相同,因为很久以前它就构建在JavaScript语言中。在此question about setting window.location中阅读更多内容。
获取 window.location
和window.location.href
的行为有所不同,因为前者是对象而后者是字符串。如果您运行indexOf()
或toLowerCase()
等字符串函数,则必须使用window.location.href
。
答案 2 :(得分:3)
window.location
之外, href
还有其他属性,但如果您为window.location
分配了一个网址,则会重定向。
您可以在MDN中看到所有属性(例如search
,protocol
,hash
,...)
答案 3 :(得分:2)
位置对象有一个toString方法返回当前的URL。您还可以为window.location分配一个字符串。这意味着您可以使用window.location,就像在大多数情况下它是一个字符串一样。有时,例如,当您需要在其上调用String方法时,您必须显式调用toString:
window
只是包含多个属性的全局对象,其中一个是location
。 location
也有属性,其中一个是href
。 location.href
只是window.location.href
答案 4 :(得分:0)
location.href
属性返回当前页面的完整网址。
window.location
属性表示窗口对象的当前位置,如果更改此位置,则会重定向。
答案 5 :(得分:-2)
您正在访问同一个对象。它是某种快捷方式。如果你使用firebug(或类似的)来改变它的“hash”属性,你会发现它在两个地方都被改变了。
从技术上讲,您的默认范围是窗口对象,因此当您访问“location.href”时,您将访问window.location.href。