我最近一直在研究JavaScript的top
功能,并注意到我可以运行window.top
或top.window
。从我看到的,这两者在功能上没有区别,所以奇怪的是两者都可以运行。
// They appear to be the same here at least:
console.log(window.top === top.window);
我最近一直在研究JavaScript的top
功能,并注意到我可以运行window.top
或top.window
。从我看到的,这两者在功能上没有区别,所以奇怪的是两者都可以运行。
// They appear to be the same here at least:
console.log(window.top === top.window);
window
是全局对象,因此可以像独立变量一样访问它上面的属性。在顶层引用 top
与引用 window.top
是相同的。所以问题归结为什么两者之间有区别。
window.top
并且
window.top.window
window.top
提供了一个窗口对象(如果你在 iframe 中,它可能与 window
相同,或者是外部窗口),而窗口的 window
属性是对同一 window
对象的引用(这是一种奇怪的自我引用),因此这两个引用也完全相同。您可以依靠它们。
window.top === window.top.window
始终为true
。
window.window
和window.window.window.window
等操作。 - lukehillonlinewindow
属性引用到对象本身的目的可能是为了方便引用全局对象。否则,您需要在脚本顶部进行手动的var window = this;
赋值。是的,您可以无限地链接window
,就像obj = {}; obj.obj = obj; obj.obj.obj.obj.obj === obj
将返回true
一样。 - CertainPerformance