Skip to content

顶层对象属性

全局对象

ES5 之中,顶层对象的属性与全局变量是等价的。

  • 在浏览器环境指的是window对象(或者self)。
  • 在 Node 指的是global对象。
  • Web Worker 里面,self也指向顶层对象。

globalThis

ES2020 在语言标准的层面,引入globalThis作为顶层对象。 任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。

垫片库global-this模拟了这个提案,可以在所有环境拿到globalThis(低版本向上兼容)。

申明变量的

ES6中为了保持兼容性

  • var命令和function命令声明的全局变量,依旧是顶层对象的属性(保持变量提升的特性)。
  • let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性(从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩)。