为什么我能在控制台window.window.window.window中执行此操作并返回窗口?

azi*_*ani 2 javascript

为什么我能在控制台中执行此操作window.window.window.window.window无限追加并返回DOM窗口?

Phr*_*ogz 5

因为window对象具有window指向自身的属性.

这跟你写的一样:

var foo = {};
foo.foo = foo;
console.log(foo.foo.foo.foo.foo.foo.foo);
Run Code Online (Sandbox Code Playgroud)

为了好玩,window对象还有一个self属性,指向自身和(如果您不在框架集中)一个top也指向它的属性.这样你就可以写:

console.log(window.window.top.self.top.self.window.window.self.top.top.self);
Run Code Online (Sandbox Code Playgroud)