全局对象
JavaScript 中的全局对象是一个对象,它代表全局作用域。
注意:全局可用的对象,即全局作用域中的对象,有时也被称为全局对象,但严格来说,每个环境中只有一个全局对象。
在每个 JavaScript 环境中,总会定义一个全局对象。全局对象的接口取决于脚本运行的执行上下文。例如:
- 在网页浏览器中,脚本没有特别启动为后台任务的任何代码,都将
Window作为其全局对象。这是 Web 上绝大多数 JavaScript 代码的情况。 - 在
Worker中运行的代码,以WorkerGlobalScope对象作为其全局对象。 - 在Node.js 下运行的脚本,将一个名为
global的对象作为其全局对象。
全局属性 globalThis 允许在不考虑当前环境的情况下访问全局对象。
脚本顶层的 var 语句和 函数声明会创建全局对象的属性。另一方面,let 和 const 声明永远不会创建全局对象的属性。
全局对象的属性会自动添加到全局作用域。
在 JavaScript 中,全局对象始终持有对自身的引用。
js
console.log(globalThis === globalThis.globalThis); // true (everywhere)
console.log(window === window.window); // true (in a browser)
console.log(self === self.self); // true (in a browser or a Web Worker)
console.log(frames === frames.frames); // true (in a browser)
console.log(global === global.global); // true (in Node.js)