如何使用 ES11 中的 globalThis 替代 window 和 self 对象

在 ECMAScript 2019 (ES11) 标准中,新增了一个全局对象 globalThis,用于解决不同环境下全局对象的命名差异问题。在前端开发中,我们经常会用到 window 或者 self 对象来访问全局变量,但是在 Web Worker 和 Node.js 等环境下,这两个对象并不可用,这时候就可以使用 globalThis 对象来替代。

globalThis 的定义

globalThis 是 ES11 中新增的全局对象,它是一个全局作用域下的属性,并且它的值是不可变的。globalThis 指向全局对象,无论在什么环境中(浏览器中的 window 对象,Node.js 中的 global 对象等)。因此,在任何环境下都可以通过 globalThis 来访问全局变量。

如何使用 globalThis 对象

使用 globalThis 替代 windowself 对象,只需将这两个对象的引用替换成 globalThis 即可。例如:

示例代码

下面的例子是在实现一个简单的全局通信机制时,用到了 globalThis

上面的代码通过 globalThis 对象,在不同的页面中传递数据和事件,实现了全局的通信机制。

总结

使用 globalThis 对象可以解决全局对象命名的差异问题,使得在不同环境下访问全局变量更加方便。在实际开发中,我们可以通过 globalThis 对象实现全局通信、打印日志等功能。不过,需要注意的是,不要滥用全局变量,避免产生不可预知的副作用。

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


纠错
反馈