ES11 中的 globalThis 好处

阅读时长 3 分钟读完

在 ES11 中,新增加了一个全局对象 globalThis。这个对象可以在任何环境下访问,无论是浏览器还是 Node.js。它的作用是提供一个标准的全局对象,解决了不同环境下全局对象的命名不一致的问题。在这篇文章中,我们将探讨 globalThis 的好处以及如何使用它。

globalThis 的好处

统一全局对象命名

在浏览器中,全局对象是 window,在 Node.js 中,全局对象是 global。这两个全局对象的命名不一致会给开发者带来很多麻烦。例如,如果我们想要在浏览器中使用一个全局变量,在 Node.js 中也能使用,我们需要手动将这个变量挂载到 global 对象上。而有了 globalThis,我们可以直接使用 globalThis 这个对象,无需关心具体的环境,从而统一了全局对象的命名。

更方便的跨域通信

在浏览器中,跨域通信时,我们需要使用 window.postMessage() 方法。而在 Node.js 中,我们可以使用 process.send() 方法。这两种方法的使用方式不一致,会给开发者带来很多麻烦。而有了 globalThis,我们可以直接使用 globalThis.postMessage() 方法,无需关心具体的环境,从而更方便地进行跨域通信。

更好的兼容性

在旧版的浏览器中,可能没有 window 对象,而在旧版的 Node.js 中,可能没有 global 对象。这会导致代码在不同的环境下无法运行。而有了 globalThis,我们可以保证代码在任何环境下都能正常运行,从而提高了代码的兼容性。

如何使用 globalThis

globalThis 是一个全局对象,我们可以直接访问它。例如,我们可以使用以下代码获取全局对象:

这段代码会先判断是否存在 globalThis 对象,如果存在则使用 globalThis 对象,否则判断是否存在 window 对象、global 对象、self 对象,如果存在则使用对应的对象,否则使用一个空对象。

我们也可以直接使用 globalThis 对象,例如:

总结

globalThis 是 ES11 中新增加的一个全局对象,它的作用是提供一个标准的全局对象,解决了不同环境下全局对象的命名不一致的问题。使用 globalThis 可以统一全局对象命名、更方便地进行跨域通信、提高代码的兼容性。我们可以直接访问 globalThis 对象,并且无需关心具体的环境。

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

纠错
反馈