在 ECMAScript 2020 中,新增的 globalThis 全局对象是一个非常实用的功能。它可以让开发者在任何运行环境中获取到全局对象,而不用考虑当前环境的不同,并且还可以非常方便地跨平台共享代码。
理解 globalThis 全局对象
在不同的 JavaScript 运行环境中,访问全局对象的方式是不同的。在浏览器中,可以使用 window 对象引用全局对象,而在 Node.js 中,则可以使用 global 对象。此外,在 Web Workers 和 Service Workers 中,还有自己的全局对象。
为了解决这个问题,ECMAScript 2020 引入了 globalThis 全局对象。无论在何种运行环境下,通过访问 globalThis 即可获取到全局对象。
console.log(globalThis);
可以在浏览器环境和 Node.js 环境中运行上述代码,均可以得到全局对象。如图所示,在浏览器环境下,globalThis 指向 window 对象;在 Node.js 环境下,globalThis 指向 global 对象。
globalThis 的指导意义
globalThis 对前端开发的意义在于,可以帮助开发者编写一些能够在不同平台共享的代码。
比如,对于一个库来说,需要在不同的运行环境下都能够运行。在以前,编写这样的库需要判断当前运行环境,并根据不同环境使用不同的全局对象,代码不仅复杂还容易出错。有了 globalThis 对象,开发者只需要使用一种方式获取全局对象,就可以在不同平台上运行同样的代码。
另外,globalThis 对于一些需要动态引用全局对象的场景也非常有用。比如,在某些库中需要动态地引用全局对象的属性,此时可以使用 globalThis 对象来获取全局对象。
const message = "Hello, globalThis!"; globalThis.console.log(message); // Hello, globalThis!
注意事项
需要注意的是,在某些旧版浏览器中并不支持 globalThis 对象。此时,可以通过以下方式来实现类似的功能:
-- -------------------- ---- ------- ----- --------- - -- -- ------ ---- --- ----------- - ---- - ------ ------ --- ----------- - ------ - ------ ------ --- ----------- - ------ - ---------- ----- ------ - ------------ --------------------
结论
globalThis 全局对象在 ECMAScript 2020 中的引入,填补了不同运行环境下访问全局对象方式不同的问题,并且可以让开发者更加方便地编写跨平台共享的代码。在实际开发中,可以尝试使用 globalThis 对象来简化代码并提高代码的可读性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671b0e3b9babaf620fa743da