在 JavaScript 中,全局对象是一个非常重要的概念,所有的全局变量和函数都存在于它的命名空间中。而 ES11 新引入的 globalThis 对象为 JavaScript 取消了全局对象提供了指导。
globalThis 是什么?
globalThis 是一个新的内置对象,它提供了一个标准方式来访问全局对象。在浏览器环境下,它指向 window 对象;在 Node.js 环境下,它指向 global 对象。
之所以引入 globalThis,是因为在不同的 JavaScript 环境中,全局对象的名称不同,比如在浏览器中全局对象是 window,在 Node.js 中是 global。使用 globalThis 可以避免在不同环境中编写不同的代码。
如何使用 globalThis?
globalThis 是一个全局对象,可以在任何地方使用,无需显式引入。
// 无需引入,直接使用 globalThis console.log(globalThis === window); // true
// 在 Node.js 环境中运行 console.log(globalThis === global); // true
globalThis 对开发者的意义
globalThis 的出现不仅简化了代码,还可以避免一些常见的错误。比如在浏览器环境下,我们经常使用 window 对象来访问全局变量和函数,但如果我们的代码运行在一个 Web Worker 中,window 对象将不可用,这时如果我们没有兼容 Web Worker 的代码,就会出现问题。使用 globalThis 可以避免这种兼容性问题。
此外,globalThis 还对跨平台开发非常有用。比如你可能需要将你的代码同时运行在浏览器和 Node.js 中,这时你只需要使用 globalThis,就可以保证你的代码在不同环境中运行一致。
示例代码
// 浏览器环境下运行 console.log(globalThis === window); // true console.log(globalThis.setTimeout === window.setTimeout); // true // Node.js 环境下运行 console.log(globalThis === global); // true console.log(globalThis.setTimeout === global.setTimeout); // true
总结
ES11 新特性之 globalThis,为 JavaScript 取消全局对象提供了指导,可以避免常见的兼容性问题,对跨平台开发也非常有用。我们应该在编写代码的过程中,尽可能地使用 globalThis,保证代码的兼容性和可重用性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6537edc37d4982a6eb083804