Javascript 为什么全球;“窗口”;对象具有多级访问权限

Javascript 为什么全球;“窗口”;对象具有多级访问权限,javascript,Javascript,我在玩窗户的东西,想找点什么。我注意到,全局窗口对象被复制到多个级别 尝试: 我们有什么办法可以利用它吗?来自: window.window:返回对当前窗口的引用 这个简单的引用使对象循环。它不是真正的多级,您只需要一个属性来指向它自己,然后就可以进行递归 例如: var zombie = { fred: 'Hello' }; zombie.zombie = zombie; 现在,您可以疯狂地执行以下操作: alert(zombie.zombie.zombie.zombie.fred

我在玩窗户的东西,想找点什么。我注意到,全局窗口对象被复制到多个级别

尝试:

我们有什么办法可以利用它吗?

来自:

window.window:返回对当前窗口的引用


这个简单的引用使对象循环。

它不是真正的多级,您只需要一个属性来指向它自己,然后就可以进行递归

例如:

var zombie = {
    fred: 'Hello'
};

zombie.zombie = zombie;
现在,您可以疯狂地执行以下操作:

alert(zombie.zombie.zombie.zombie.fred);

有关
窗口
存在此问题的具体原因,请参阅Kevin Brydons的答案。这对于第一个级别来说是有意义的,但其余的只是自我引用的副产品。

Mozilla已经对
.window
属性做了简要的解释

和摘录:

让window属性引用对象本身的意义在于 (可能)以便于引用全局对象(否则 您必须在窗口顶部执行手动var窗口=this;赋值 (你的剧本)

让window属性引用对象本身的意义在于 (可能)以便于引用全局对象(否则 您必须在窗口顶部执行手动var窗口=this;赋值 你的剧本)

另一个原因是,如果没有这个财产,你将无法 写,例如,“window.open(“”)”-你会 只需使用“打开(“”)”即可

使用此属性的另一个原因是希望 提供OOP版本和非OOP版本(特别是JavaScript) 模块)。例如,如果我们引用“this.window.location.href”,则 JavaScript模块可以在 它定义的类(因为它不存在全局“窗口”变量 默认值),例如,可以在传入 将窗口对象添加到模块类的构造函数。因此,“这个窗口” 其函数的内部将引用该窗口对象。在 没有名称空间的版本,“this.window”将简单地引用回 “窗口”,并且还能够在没有 麻烦另一个优点是这样一个类的对象(甚至 如果类是在模块外部定义的,则可以更改 随意引用窗口,因为如果 他们硬编码了一个对“窗口”的引用(但在 类仍然可以设置为当前窗口对象)


0==0,0+0==0,0+0+0==0,0+0+0==0+0,0+0+0+0==0+0+0,以及0+1==0+0+0+0+1==0+0+0+0+0+0+1=…:-)根据-,window.window返回对当前窗口的引用。我想现在我明白了,这是最好的答案+1如果你在这里复制你生活中有趣的部分link@dystroyMozilla的页面整体上给出了nairvijays的完整答案。我认为抄袭大部分课文没有多大意义。如果你愿意,请随意编辑我的答案!
alert(zombie.zombie.zombie.zombie.fred);