我正在摆弄 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/