Log*_*nch 2 javascript nested window object
例如,您可以使用window对象来调用alert函数:
window.alert("Hello World!");
Run Code Online (Sandbox Code Playgroud)
您还可以在window对象中使用该window对象:
window.window.alert("Hello World!");
Run Code Online (Sandbox Code Playgroud)
哎呀,你甚至可以这样做:
window.window.window.window.window.window.window.window.window.window.window.window.window.alert("Hello World!");
Run Code Online (Sandbox Code Playgroud)
我知道这很荒谬,没有理智的开发人员会在现实生活中这样做,但是为什么这可能呢?
为什么会有这么多嵌套window对象?
每个全局变量都是全局对象的属性。window是全球性的,因此window.window必须存在并引用自身:
console.log(window.window === window)Run Code Online (Sandbox Code Playgroud)
但是为什么会这样呢?
这只是一个循环引用。该属性的值是对象本身。简单的例子:
var foo = {
bar: 42
};
foo.foo = foo;
console.log(foo.bar);
console.log(foo.foo.bar);
console.log(foo.foo.foo.bar);Run Code Online (Sandbox Code Playgroud)
您在DOM中也有循环引用:
var body = document.body;
console.log(body.parentNode.children[1] === body);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |