ECMAScript 2020 中新增的 globalThis 全局对象

在 ECMAScript 2020 中,新增的 globalThis 全局对象是一个非常实用的功能。它可以让开发者在任何运行环境中获取到全局对象,而不用考虑当前环境的不同,并且还可以非常方便地跨平台共享代码。

理解 globalThis 全局对象

在不同的 JavaScript 运行环境中,访问全局对象的方式是不同的。在浏览器中,可以使用 window 对象引用全局对象,而在 Node.js 中,则可以使用 global 对象。此外,在 Web Workers 和 Service Workers 中,还有自己的全局对象。

为了解决这个问题,ECMAScript 2020 引入了 globalThis 全局对象。无论在何种运行环境下,通过访问 globalThis 即可获取到全局对象。

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

可以在浏览器环境和 Node.js 环境中运行上述代码,均可以得到全局对象。如图所示,在浏览器环境下,globalThis 指向 window 对象;在 Node.js 环境下,globalThis 指向 global 对象。

globalThis 的指导意义

globalThis 对前端开发的意义在于,可以帮助开发者编写一些能够在不同平台共享的代码。

比如,对于一个库来说,需要在不同的运行环境下都能够运行。在以前,编写这样的库需要判断当前运行环境,并根据不同环境使用不同的全局对象,代码不仅复杂还容易出错。有了 globalThis 对象,开发者只需要使用一种方式获取全局对象,就可以在不同平台上运行同样的代码。

另外,globalThis 对于一些需要动态引用全局对象的场景也非常有用。比如,在某些库中需要动态地引用全局对象的属性,此时可以使用 globalThis 对象来获取全局对象。

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

注意事项

需要注意的是,在某些旧版浏览器中并不支持 globalThis 对象。此时,可以通过以下方式来实现类似的功能:

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

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

结论

globalThis 全局对象在 ECMAScript 2020 中的引入,填补了不同运行环境下访问全局对象方式不同的问题,并且可以让开发者更加方便地编写跨平台共享的代码。在实际开发中,可以尝试使用 globalThis 对象来简化代码并提高代码的可读性。

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