[英]performance difference between location.href and window.location.href
[英]Difference between window.location and location.href
我对window.location
和location.href
之间的区别感到困惑。 两者似乎都以同样的方式行事。
有什么不同?
window.location
是一个对象,它包含有关当前文档位置(主机,href,端口,协议等)的所有信息。
location.href
是window.location.href的简写(你从全局对象 - 窗口调用位置,所以这是window.location.href),这只是一个包含当前网站完整URL的字符串。
当您为它们分配URL时,它们的行为相同 - 它们将重定向到您指定的页面,但是当您打开浏览器控制台(firebug或开发人员工具)并编写window.location
和location.href
时,您可以看到它们之间的差异。 。
它们是不同的。 window.location
是一个包含属性href
的对象 ,它是一个字符串 。
正如您所注意到的那样, 设置 window.location
和window.location.href
行为方式相同,因为它很久以前就构建在JavaScript语言中。 在这个关于设置window.location的问题中阅读更多内容 。
获取 window.location
和window.location.href
行为有所不同,因为前者是一个对象而后者是一个字符串。 如果运行indexOf()
或toLowerCase()
等字符串函数,则必须使用window.location.href
。
window.location
除了href
之外还有其他属性,但是如果你为window.location
分配一个它将重定向的URL。
你可以在MDN中看到它的所有属性(比如search
, protocol
, hash
......)
查看这篇旧的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.