初探 ES12 中新增的 globalThis 全局对象

阅读时长 3 分钟读完

在前端领域,JavaScript 是最为常用的语言之一。而在 JavaScript 的标准规范中,每个浏览器环境都有一个全局对象。比如在浏览器中就有 window 对象,而在 Node.js 环境中,则有 global 对象。这些全局对象是在实现中定义的,而由于不同环境中实现的不同,它们的名称和属性也会有所不同。这为我们编写跨平台的代码带来了不小的麻烦。

为了解决这个问题,ECMAScript 2022 中新增了一个全局对象,叫做 globalThis。不论是在浏览器或 Node.js 中,使用 globalThis 都可以保证获取到全局对象。

globalThis 的使用

globalThis 的使用方法非常简单,直接使用全局变量 globalThis 即可。比如下面的代码:

在浏览器中执行会输出 window,而在 Node.js 中执行,则会输出 global。这样就可以简单地获取到全局对象,而无需关心当前运行环境。

除了替代全局对象,globalThis 还新增了一些有用的属性,如 globalThis.setTimeout、globalThis.parseFloat 等等,这些属性在不同环境下不存在的问题也将被解决。

使用示例

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

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

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

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

上述代码中,我们使用了自定义的函数来获取不同环境下的全局对象。然后,我们就可以使用 globalThis 来输出全局变量 MY_GLOBAL_VAR 的值,通过这样的方式,我们无需再为不同环境定义不同的全局变量,而是直接使用 globalThis.MY_GLOBAL_VAR 即可。

总结

globalThis 的引入使得我们在不同版本、不同环境下都可以方便地获取全局对象,而不再需要关注不同的实现方法。同时,globalThis 还新增了一些有用的属性,提供了更多便利。因此,学习 globalThis 对于前端开发人员来说非常有益。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e025b8f6b2d6eab3b3d051

纠错
反馈