ES11 的 globalThis 对象:在浏览器和 Node.js 中使用的全局对象

前言

随着 JavaScript 的发展和普及,前端开发的领域也越来越广泛,而全局对象是 JavaScript 中最基础的概念之一。现在的 JavaScript 标准已经发展到了 ES11,而在这个版本中,我们将会看到一个新的全局对象 —— globalThis。

本文将会详细介绍 globalThis 对象的概念、特点、用法以及在浏览器和 Node.js 中的使用方法,帮助读者更好地理解和应用 globalThis 对象。

概念

globalThis 是 ES11 新增的全局对象,它的作用是提供一种跨平台的访问全局对象的方式。以前我们在浏览器中通过 window 对象、在 Node.js 中通过 global 对象来访问全局对象,这样不够方便且不跨平台。

globalThis 对象相当于一种新的跨平台的全局命名空间,可以通过它来获取和设置全局对象。

特点

相较于之前的全局对象,globalThis 更加稳定,因为它可以在不同的环境下被访问到,同时也不需要关心代码在哪个环境中运行。

从 ES11 开始,每一个 JavaScript 环境(浏览器、Node.js、Web Worker 等)都需要支持 globalThis 对象,这使得 globalThis 成为了 JavaScript 中的一个重要的全局对象。

用法

globalThis 对象有一个简单的用法,就是用来访问全局对象。比如,获取全局对象的最佳方式是使用以下代码:

这句代码的意思是:获取全局对象,如果当前环境中没有 globalThis 对象,则判断是否有 self 对象,如果再没有则判断是否有 window 对象,最后创建一个空对象作为全局对象。

如果当前环境中存在 globalThis 对象,则可以直接使用以下代码获取:

在使用 globalThis 对象时,需要注意一个问题:在某些环境中,比如 Chrome 中,globalThis 对象所指向的 window 对象不是顶层的 window,而是一个特定的沙盒对象。

在这种情况下,可以通过以下代码来检查 globalThis 是否是顶层的 window 对象:

在浏览器中使用 globalThis

在浏览器中,globalThis 对象所表示的就是顶层的 window 对象。在 JavaScript 的前端开发中,访问 window 对象可以说是家常便饭。

比如,我们可以通过以下代码访问浏览器窗口的大小:

在处理跨浏览器的事件绑定时也可以使用 globalThis 对象,比如:

在 Node.js 中使用 globalThis

在 Node.js 中,globalThis 对象所表示的是全局的命名空间,比如每个 Node.js 模块都在其自身的模块作用域中执行,使用 globalThis 对象可以访问该模块的全局作用域。

可以通过以下代码来访问 Node.js 全局变量:

在全局作用域中使用 globalThis 对象,代码如下:

总结

通过本文,我们了解了 ES11 的 globalThis 对象的概念、特点和用法,并详细介绍了在浏览器和 Node.js 中使用 globalThis 对象的方法,希望读者对这个新的全局对象有更深入的了解。

globalThis 对象是一个跨环境的全局对象,它使得 JavaScript 中的全局命名空间变得更加稳定和可靠。在实际开发中,我们可以使用 globalThis 对象来访问当前环境的全局变量和对象,帮助我们更方便地编写跨平台的 JavaScript 代码。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653f6cae7d4982a6eb8fb68f


纠错
反馈