在 JavaScript 中,全局对象是一个非常重要的概念。在浏览器环境中,全局对象是 window
,在 Node.js 环境中,全局对象是 global
。但是,由于历史原因,这两个对象的属性和方法并不完全相同,这给开发者带来了一些麻烦。
为了解决这个问题,ES10 新增了一个全局对象 globalThis
,它可以在任何环境中访问,而且它的属性和方法与 window
和 global
都是相同的。
globalThis 的用法
使用 globalThis
的方法与使用 window
或 global
是一样的。例如,要在全局作用域中定义一个变量,可以使用以下代码:
-------------- - ------
这将在全局作用域中定义一个名为 foo
的变量,并将其值设置为 'bar'
。在浏览器环境中,这将等同于以下代码:
---------- - ------
在 Node.js 环境中,这将等同于以下代码:
---------- - ------
globalThis 的好处
使用 globalThis
的好处是,它可以让你在任何环境中编写相同的代码,而不必担心全局对象的不同之处。这使得编写跨环境代码更加容易。
例如,如果你想在浏览器和 Node.js 环境中使用相同的代码,你可以使用以下代码:
-- ------- ---------- --- ------------ - --- ---------- - ------- -
这将在浏览器环境中将 globalThis
设置为 window
,在 Node.js 环境中将其设置为 global
。
示例代码
下面是一个使用 globalThis
的示例代码,它将在浏览器和 Node.js 环境中都可以使用:
------------------------------ ---------
这将在控制台中打印出 'Hello, world!'
。
总结
ES10 中新增的 globalThis
对象可以让你在任何环境中编写相同的代码,而不必担心全局对象的不同之处。这使得编写跨环境代码更加容易。要正确使用 globalThis
,你应该熟悉它的用法,以及如何在不同的环境中使用它。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66050d48d10417a22229b10b