解密 ES10 中新增的 globalThis 对象

在 JavaScript 中,全局对象是一个非常重要的概念。在浏览器环境中,全局对象是 window,在 Node.js 环境中,全局对象是 global。但是,由于历史原因,这两个对象的属性和方法并不完全相同,这给开发者带来了一些麻烦。

为了解决这个问题,ES10 新增了一个全局对象 globalThis,它可以在任何环境中访问,而且它的属性和方法与 windowglobal 都是相同的。

globalThis 的用法

使用 globalThis 的方法与使用 windowglobal 是一样的。例如,要在全局作用域中定义一个变量,可以使用以下代码:

-------------- - ------

这将在全局作用域中定义一个名为 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