为何window.this返回undefined而window.window返回window对象?
为什么
window.this返回undefined,而window.window返回window对象? 先看代码实际运行结果:
let x = this.window; let y = window.window; let z = window.this; console.log(x); // 输出 window 对象 console.log(y); // 输出 window 对象 console.log(z); // 输出 undefined
核心原因拆解:
关于
window.window:
浏览器环境中,window是全局顶层对象,浏览器特意给它添加了一个同名属性window,这个属性的取值就是window对象本身。所以访问window.window时,本质是读取它自身挂载的这个属性,结果自然是window对象。关于
window.this:this是JS的关键字,不是对象的属性。它的指向只和当前执行上下文有关,不属于任何对象的固有属性。当你写window.this时,是在尝试访问window对象上名为this的属性——但window对象根本没有这个属性,所以返回undefined。补充:为什么
this.window和window.window结果一致:
在全局作用域下,this的指向就是window对象,所以this.window等价于window.window,最终也返回window对象。
内容的提问来源于stack exchange,提问作者Lokendra Verma
相关产品推荐
相关产品推荐

