介绍
在 ECMAScript 2020 之前,全局对象是由宿主(host)环境提供的,比如浏览器中的 window
对象,Node.js 中的 global
对象等。这使得在不同的运行环境中编写通用的代码变得困难。
ECMAScript 2020 引入了 globalThis
对象,它提供了一种跨平台的访问全局对象的方案。使用 globalThis
,可以在不同的环境中编写跨平台的代码。
语法
globalThis
是全局对象的属性,可以直接访问。以下代码演示了如何使用 globalThis
:
console.log(globalThis);
区别
globalThis
与 window
的最大区别是 globalThis
在不同的运行环境中都存在,而 window
只存在于浏览器环境中。
当在浏览器环境中使用时,globalThis
表示的就是 window
。以下代码演示了 globalThis
与 window
的等价性:
console.log(globalThis === window); // true
当在 Node.js 等非浏览器环境中使用时,globalThis
表示的就是全局对象。以下代码演示了在 Node.js 环境中使用 globalThis
访问全局对象:
console.log(globalThis.process.version);
示例
以下代码演示了如何在多个环境中使用 globalThis
实现跨平台:
-- -------------------- ---- ------- ----- ------------ - ------ ---------- --- ----------- - ---------- - ------ ---- --- ----------- - ---- - ------ ------ --- ----------- - ------ - --- -- ----- --------------------------------- ------------------------------- -- ------- -- ------------------------------------------ ----------------------------------------
结论
globalThis
对象提供了一种跨平台的访问全局对象的方案,可以使得在不同的环境中编写通用的代码变得更加容易。在浏览器环境中,globalThis
与 window
是等价的。在 Node.js 等非浏览器环境中,globalThis
表示的是全局对象。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672adc09ddd3a70eb6d0fda0