ECMAScript 2021 中的全局对象 globalThis:应用和参考

在 ECMAScript 2021 中,JavaScript 引入了一个新的全局对象 globalThis。这个对象提供了一种跨平台的方式来访问全局对象,无论是在浏览器中还是在 Node.js 中,都可以使用相同的代码来访问全局对象。

globalThis 的应用

在过去,访问全局对象的方式因为浏览器和 Node.js 的差异而不同。在浏览器中,全局对象是 window,而在 Node.js 中,全局对象是 global。这意味着如果你想编写可移植的代码,你需要编写不同的代码来访问全局对象。

现在,有了 globalThis,你可以使用相同的代码来访问全局对象,无论你的代码运行在哪个环境中。例如,以下代码将打印出全局对象的类型:

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

这段代码将在浏览器和 Node.js 中都能正常运行,并且输出的结果都是 "object"。

globalThis 的参考

globalThis 对象有一些有用的属性和方法,下面是一些例子:

1. globalThis.setTimeout()

setTimeout() 方法是一个全局函数,它允许你在指定的时间后执行一个函数。在浏览器中,这个方法是 window.setTimeout(),而在 Node.js 中,它是 global.setTimeout()。使用 globalThis,你可以在任何环境中使用相同的代码来调用 setTimeout() 方法:

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

2. globalThis.fetch()

fetch() 方法是一个全局函数,它允许你发起 HTTP 请求并获取响应。在浏览器中,这个方法是 window.fetch(),而在 Node.js 中,它需要使用第三方库。使用 globalThis,你可以在任何环境中使用相同的代码来调用 fetch() 方法:

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

3. globalThis.console

console 对象是一个全局对象,它提供了一些有用的方法来打印日志和调试信息。在浏览器中,这个方法是 window.console,而在 Node.js 中,它是 global.console。使用 globalThis,你可以在任何环境中使用相同的代码来访问 console 对象:

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

示例代码

下面是一个使用 globalThis 的示例代码,它演示了如何使用相同的代码在浏览器和 Node.js 中获取全局对象:

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

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

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

这段代码将在任何环境中都能正常运行,并且输出的结果都是 "Hello, world!"。

总结

globalThis 是一个非常有用的新特性,它允许你使用相同的代码在不同的环境中访问全局对象。这使得编写可移植的代码变得更加容易,同时也提高了代码的可读性和可维护性。如果你想编写跨平台的 JavaScript 代码,globalThis 将是一个非常有用的工具。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65dfeff61886fbafa4d257d5