在前端领域,JavaScript 是最为常用的语言之一。而在 JavaScript 的标准规范中,每个浏览器环境都有一个全局对象。比如在浏览器中就有 window 对象,而在 Node.js 环境中,则有 global 对象。这些全局对象是在实现中定义的,而由于不同环境中实现的不同,它们的名称和属性也会有所不同。这为我们编写跨平台的代码带来了不小的麻烦。
为了解决这个问题,ECMAScript 2022 中新增了一个全局对象,叫做 globalThis。不论是在浏览器或 Node.js 中,使用 globalThis 都可以保证获取到全局对象。
globalThis 的使用
globalThis 的使用方法非常简单,直接使用全局变量 globalThis 即可。比如下面的代码:
console.log(globalThis);
在浏览器中执行会输出 window,而在 Node.js 中执行,则会输出 global。这样就可以简单地获取到全局对象,而无需关心当前运行环境。
除了替代全局对象,globalThis 还新增了一些有用的属性,如 globalThis.setTimeout、globalThis.parseFloat 等等,这些属性在不同环境下不存在的问题也将被解决。
使用示例
-- -------------------- ---- ------- -- ------ ------------------------ - ---- -- ------------------- -------- ----------------- - -- ------- ------ --- ------------ - ------ ------- - -- ------- ------ --- ------------ - ------ ------- - -- ------- ---- --- ------------ - ------ ----- - ------ ----- - -- ---------- ----- --------- - ------------------ ----------------------- -- -- ---------- ------ --------------------------------------
上述代码中,我们使用了自定义的函数来获取不同环境下的全局对象。然后,我们就可以使用 globalThis 来输出全局变量 MY_GLOBAL_VAR 的值,通过这样的方式,我们无需再为不同环境定义不同的全局变量,而是直接使用 globalThis.MY_GLOBAL_VAR 即可。
总结
globalThis 的引入使得我们在不同版本、不同环境下都可以方便地获取全局对象,而不再需要关注不同的实现方法。同时,globalThis 还新增了一些有用的属性,提供了更多便利。因此,学习 globalThis 对于前端开发人员来说非常有益。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e025b8f6b2d6eab3b3d051