ES10 中的 GlobalThis:如何统一在全局作用域中使用 this?

阅读时长 3 分钟读完

在 JavaScript 中,this 关键字用于引用当前执行上下文的对象。但是在不同的执行上下文中,this 的值可能会有所不同。为了解决这个问题,ES10 引入了一个新的全局对象 GlobalThis,它可以在任何执行上下文中引用全局对象。

GlobalThis 的定义

GlobalThis 是一个全局对象,它可以在任何执行上下文中引用全局对象。在浏览器中,它可以通过 window、self 或 frames[0] 来访问;在 Node.js 中,它可以通过 global 访问。使用 GlobalThis,我们可以统一在全局作用域中使用 this。

GlobalThis 的用法

在 ES10 中,我们可以使用 GlobalThis 来访问全局对象。例如,在浏览器中,我们可以使用以下代码来访问全局对象:

或者,我们可以直接使用 GlobalThis:

GlobalThis 的优势

使用 GlobalThis 的主要优势是可以在任何执行上下文中引用全局对象。这样,我们就可以在不同的执行上下文中使用相同的代码,而不需要担心 this 的值会发生变化。

另外,GlobalThis 的引入还可以简化一些代码。例如,我们可以使用以下代码来定义一个全局变量:

这样,我们就可以在任何执行上下文中访问该变量,而不需要在不同的执行上下文中分别定义它。

示例代码

下面是一个使用 GlobalThis 的示例代码:

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

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

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

总结

GlobalThis 是 ES10 中引入的一个全局对象,它可以在任何执行上下文中引用全局对象。使用 GlobalThis,我们可以统一在全局作用域中使用 this,并且可以在不同的执行上下文中使用相同的代码,而不需要担心 this 的值会发生变化。

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

纠错
反馈