ES2020:全局对象 globalThis

阅读时长 3 分钟读完

ES2020 带来了一些有趣的新功能,其中包括全新的全局对象 globalThis。在过去,开发人员必须根据他们所处的环境使用不同的全局对象,例如 windowselfglobalthis。而 globalThis 为解决这种问题而来,它可以在任何环境下都找到全局对象。

什么是全局对象?

全局对象是 JavaScript 运行环境提供的顶层对象。它可以包含许多可用的方法和属性(如全局变量),并且可以从任何地方访问它们。在浏览器中,全局对象通常是 window;在 Node.js 中,则是 global

全局对象的问题

虽然全局对象非常有用,但它在跨平台应用程序中会有问题。在一些特殊的情况下,全局对象可能不同。例如,如果您正在编写既可在浏览器上运行又可在 Node.js 上运行的代码,则必须选择使用预定义的全局对象,或者在代码中使用条件语句进行选择。

globalThis 的诞生

为了避免跨平台应用程序中出现的全局对象问题,ES2020 引入了新的全局对象 globalThisglobalThis 是在全局作用域中定义的全局属性,它总是引用全局对象。无论在任何环境下,都可以使用 globalThis 访问全局作用域。

globalThis 的用途

globalThis 很有用,因为它可以帮助您跨多个环境编写代码,而无需考虑全局对象的不同。这使得在浏览器上运行的脚本能够在 Node.js 中工作,并且在不同的 JavaScript 环境中传递代码时也不易出错。

下面是一个示例,演示如何使用 globalThis 在不同的环境中运行相同的代码:

其他使用场景

除了跨平台编写外,globalThis 还可以用于动态访问全局对象。例如,您可以在代码中调用一个不知道其宿主环境的函数。globalThis 可以帮助您在任何情况下找到所需的全局对象。

总结

globalThis 是 ES2020 为了解决全局对象存在的问题引入的新的全局对象。使用 globalThis 可以帮助您跨平台编写代码且不必担心全局对象的不同,也可以在不知道宿主环境的情况下查找全局对象。随着 JavaScript 应用程序变得越来越复杂,使用 globalThis 可以让开发人员更轻松地编写可靠的代码。

如果您发现自己需要在多个 JavaScript 环境中编写代码,建议使用 globalThis 以提高代码的可移植性。

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

纠错
反馈