解析 ES2020 中的 globalThis 全局对象及其特点

阅读时长 3 分钟读完

在 ES2020 中,我们可以使用 globalThis 全局对象来跨平台访问全局对象。它在浏览器端、Node.js 端、Web Worker 中都可以使用。

globalThis 对象的特点

全局对象

在浏览器中,全局对象是 window 对象;在 Node.js 中,是 global 对象;在 Web Worker 中,是 self 对象。使用 globalThis 对象可以在不同平台中访问全局对象,方便我们编写跨平台代码。

可读写

globalThis 对象是可读写的,我们可以使用它设置全局变量。比如,在 Node.js 中,我们可以定义一个全局变量:

不存在同名变量

在 ES2020 中,我们在全局对象中定义变量时,不存在同名变量的问题。比如,在 Node.js 中,如果我们定义一个全局变量 a:

在使用 globalThis.a 时,可以访问到上面的 a 变量。

不依赖于执行上下文

globalThis 对象在不同的执行上下文中始终存在。在函数内部,我们无法访问到全局对象,但是我们可以使用 globalThis 对象访问到全局对象。比如,在函数内部访问全局变量:

示例代码

下面是一个使用 globalThis 对象实现跨平台全局变量的示例。我们使用该方法可以在浏览器、Node.js、Web Worker 中定义一个全局变量。

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

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

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

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

总结

globalThis 全局对象在 ES2020 中新增,它可以方便我们编写跨平台代码。我们可以在不同的平台中访问全局对象,并且可以在不同的执行上下文中使用。同时,globalThis 对象不存在同名变量的问题,可以更加安全地设置全局变量。使用 globalThis 对象可以更加简单地编写跨平台代码,提高代码的可重用性和可维护性。

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

纠错
反馈