如何使用 ECMAScript 2020 中的全局对象 globalThis

阅读时长 4 分钟读完

在 ECMAScript 2020 中,引入了一个新的全局对象 globalThis,它提供了一种跨平台、跨环境的方式来获取全局对象。在浏览器中,全局对象是 window,而在 Node.js 中,全局对象是 global。使用 globalThis 可以让你的代码在不同的环境中保持一致性,同时也可以让你更加容易地编写通用代码。

globalThis 的基本用法

globalThis 是一个全局对象,可以在任何地方访问它。在浏览器中,它等同于 window;在 Node.js 中,它等同于 global。你可以使用 globalThis 来获取全局对象,无论你的代码在哪个环境中运行。

输出结果:

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

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

globalThis 的应用场景

跨平台代码

使用 globalThis 可以编写跨平台代码,因为它可以让你在不同的环境中获取全局对象。例如,你可以使用 globalThis.setTimeout 来代替 window.setTimeout 或 global.setTimeout,这样你的代码就可以在浏览器和 Node.js 中运行。

通用代码

使用 globalThis 可以编写通用代码,因为它可以让你在任何环境中获取全局对象。例如,你可以使用 globalThis.fetch 来代替 window.fetch 或 global.fetch,这样你的代码就可以在浏览器和 Node.js 中运行。

安全沙箱

使用 globalThis 可以创建一个安全沙箱,因为它可以让你在任何环境中获取全局对象。你可以在一个沙箱中运行不受信任的代码,然后使用 globalThis 来访问全局对象,这样你就可以确保不受信任的代码不会访问到真正的全局对象。

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

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

globalThis 的注意事项

兼容性

globalThis 是 ECMAScript 2020 中的新特性,不是所有的浏览器和 Node.js 版本都支持它。在使用 globalThis 之前,请确保你的环境支持它,或者使用 polyfill 来提供支持。

命名冲突

在浏览器中,全局对象是 window,它有很多属性和方法,如果你在代码中定义了一个名为 window 的变量,它会覆盖全局对象。同样,在 Node.js 中,全局对象是 global,如果你在代码中定义了一个名为 global 的变量,它也会覆盖全局对象。为了避免这种情况,你应该使用 globalThis 来获取全局对象。

结论

globalThis 是 ECMAScript 2020 中的新特性,它提供了一种跨平台、跨环境的方式来获取全局对象。使用 globalThis 可以让你的代码在不同的环境中保持一致性,同时也可以让你更加容易地编写通用代码。在使用 globalThis 之前,请确保你的环境支持它,或者使用 polyfill 来提供支持。

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

纠错
反馈