在 JavaScript 中,全局对象是一个非常重要的概念,它是整个 JavaScript 运行环境中最顶层的对象。在不同的运行环境中,全局对象的名称和属性可能会有所不同,例如在浏览器中,全局对象就是 window
,而在 Node.js 中,全局对象就是 global
。为了消除这种差异,ES2020 引入了一个新的全局对象 globalThis
,它可以在任何 JavaScript 运行环境中使用。
globalThis 的作用
globalThis 的作用非常简单,它提供了一种标准的方式访问全局对象,无论是在浏览器中还是在 Node.js 中,都可以使用 globalThis
来访问全局对象。这样一来,我们就可以编写跨平台的 JavaScript 代码,而不用担心不同平台的全局对象名称不同的问题。
如何使用 globalThis
使用 globalThis 非常简单,只需要在代码中使用 globalThis
来代替全局对象即可。例如,在浏览器中,我们可以使用以下代码来访问全局对象:
console.log(globalThis === window); // true
在 Node.js 中,我们可以使用以下代码来访问全局对象:
console.log(globalThis === global); // true
示例代码
下面是一个简单的示例,它演示了如何使用 globalThis 来编写跨平台的 JavaScript 代码:
// 定义一个全局变量 globalThis.myGlobalVar = 'Hello, world!'; // 在浏览器中输出全局变量 if (typeof window !== 'undefined') { console.log(globalThis.myGlobalVar); // Hello, world! } // 在 Node.js 中输出全局变量 if (typeof global !== 'undefined') { console.log(globalThis.myGlobalVar); // Hello, world! } // 在 Web Worker 中输出全局变量 if (typeof self !== 'undefined') { console.log(globalThis.myGlobalVar); // Hello, world! } // 在 Service Worker 中输出全局变量 if (typeof clients !== 'undefined') { console.log(globalThis.myGlobalVar); // Hello, world! }
在这个示例中,我们首先定义了一个全局变量 myGlobalVar
,然后分别在浏览器、Node.js、Web Worker 和 Service Worker 中输出了这个全局变量。无论在哪个平台上运行这个代码,输出结果都应该是 Hello, world!
。这就说明了 globalThis 的作用,它可以让我们编写跨平台的 JavaScript 代码,而不用担心不同平台的全局对象名称不同的问题。
总结
在本文中,我们介绍了 ES2020 中的全局对象 globalThis,它提供了一种标准的方式访问全局对象,无论是在浏览器中还是在 Node.js 中,都可以使用 globalThis 来访问全局对象。使用 globalThis 可以让我们编写跨平台的 JavaScript 代码,而不用担心不同平台的全局对象名称不同的问题。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c42ad9add4f0e0ffe9bc82