我最近一直在阅读 JavaScripttop功能,并注意到我可以运行window.top或top.window. 从我所见,功能上没有区别,因此可以同时运行两者似乎很奇怪。
// They appear to be the same here at least:
console.log(window.top === top.window);Run Code Online (Sandbox Code Playgroud)
我的问题是,有谁知道为什么这个功能存在两次,两者之间有什么区别吗?我想知道浏览器支持方面的差异,或者与以一种或另一种方式运行它相关的古怪错误。
window是全局对象,因此可以像访问独立变量一样访问其上的属性。因此top,在顶层引用与引用相同window.top。所以问题归结为区别在于
window.top
Run Code Online (Sandbox Code Playgroud)
和
window.top.window
Run Code Online (Sandbox Code Playgroud)
window.top给你一个窗口对象(它可能与 相同window,或者它可能是一个外部窗口,如果你在 iframe 中),并且窗口的window属性是对同一个window对象的引用(这是一个奇怪的自引用),所以这两个引用也完全相同。你可以指望
window.top === window.top.window
Run Code Online (Sandbox Code Playgroud)
永远是true。
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |