javascript - 为什么全局 "window"对象有多级访问

标签 javascript

我正在摆弄 window 对象来寻找一些东西。我注意到,全局窗口对象被复制到多个级别。

尝试:

console.log(window); // returns global window object
console.log(window.window); // returns global window object
console.log(window.window.window); // returns global window object
console.log(window.window.window.window); // returns global window object 
console.log(window.window.window.window.window); // returns global window object

console.log(window === window.window); // returns true
console.log(window.window.window === window.window.window.window); // returns true

window.zombie = "Zombie!";

console.log(window.zombie === window.window.zombie); // returns true

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

最佳答案

它不是真正的多级,你只需要一个属性指向它自己,然后你就可以递归了。

例如:

var zombie = {
    fred: 'Hello'
};

zombie.zombie = zombie;

你现在可以疯狂地做:

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

关于为什么 window 存在这个的细节,请参阅 Kevin Brydons 的回答。这对第一层有意义,但其余的只是 self 引用的副产品。

关于javascript - 为什么全局 "window"对象有多级访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15000622/

相关文章:

javascript - 切换 Highcharts 自定义导出按钮上的显示/隐藏

javascript - IE9 "Access is Denied"错误,访问IFrame时

javascript - cordova.addConstructor 的替代品?

javascript - 如何使用特征检测来了解浏览器是否支持 css hover?

javascript - jQuery 图像调整大小 - 通过变量并直接给出不同的结果

javascript - d3 的过渡和动画是否使用 requestAnimationFrame?

javascript - 如何使用 javascript 仅刷新表中的数据?

javascript - 在 WebPack 中使用 babel 转译器时出现问题

javascript - 当我将 React-router Redirect 分离到另一个组件中时,它似乎不起作用

java - 如何将对象从 JavaScript 发送到 Struts 2 中的 Action 类?