ES10 中的新特性:globalThis 的实际应用场景

阅读时长 6 分钟读完

在以前的 JavaScript 版本中,全局对象的名称不是标准化的,浏览器中的全局对象是 window,Node.js 中的全局对象是 global,这给跨平台开发带来了一些麻烦。ES10 中引入的 globalThis 解决了这个问题,它提供了一种标准的方式来访问全局对象。

globalThis 的用法

在全局范围内使用 globalThis 可以访问全局对象,而不用担心它会在不同的宿主环境中表现不同。例如,以下代码演示了如何在不同环境中使用 globalThis

在函数中使用 globalThis 可以访问全局对象,而不用担心该函数在哪个上下文中运行。例如,以下代码演示了如何在函数中使用 globalThis

globalThis 的实际应用场景

  1. 与其他宿主环境的框架兼容性

使用 globalThis 可以简化与其他宿主环境的框架的兼容性。例如,在使用 React 的项目中,通常会使用 window 对象来访问全局状态(如 Redux store),但在 React Native 环境中,全局变量是 global 对象。使用 globalThis 可以轻松访问全局状态,而不必担心在不同的宿主环境中使用不同的全局变量。

以下代码演示了一个使用 globalThis 的组件(需要先安装 reduxreact-redux),它可以在不同的宿主环境中访问全局状态:

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

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

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

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

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

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

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

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

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

在浏览器或 Node.js 中,您可以访问全局组件 App,如下所示:

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

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

--------------------
  1. 操作 Web Workers

Web Workers 是浏览器提供的多线程机制,可以在另一个线程中运行 JavaScript 代码。与全局对象的交互需要使用 postMessageonmessage,在不同的 Web Worker 中访问全局对象比较困难。使用 globalThis 可以轻松地访问全局对象(如 windowself),并将其传输到其他 Web Worker。

以下代码演示了如何在 Web Worker 中使用 globalThis

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

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

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

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

结论

globalThis 的引入大大简化了跨平台开发中与全局对象的交互,同时提供了操作 Web Workers 的更便利的方式,是 ES10 中值得掌握的一项新技能。

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

纠错
反馈