在 ECMAScript 2020 中,新增了一个全局对象 globalThis,它可以在任何地方访问,无需使用特定的名称。这篇文章将详细介绍 globalThis 的作用、用法以及示例代码,帮助初学者更好地理解它的重要性。
globalThis 的作用
在以前的 ECMAScript 版本中,全局对象的名称不一致,例如在浏览器环境中,全局对象为 window,而在 Node.js 环境中,全局对象为 global。这样就导致了跨平台开发时的一些问题。
为了解决这个问题,ECMAScript 2020 引入了一个新的全局对象 globalThis。它的作用就是为了提供一个单一的、跨平台的全局对象,在不同的环境中都能够使用。
globalThis 的用法
在全局作用域中,可以直接访问 globalThis 对象,例如:
console.log(globalThis);
这个代码片段可以在浏览器和 Node.js 环境中都能正常执行,并输出相应的全局对象。
除了全局作用域之外,globalThis 还可以在闭包、函数、模块等作用域中使用:
(function() { console.log(globalThis); })();
export function foo() { console.log(globalThis); }
这些代码片段中,globalThis 仍然指向全局对象。
globalThis 的示例代码
下面是一些使用 globalThis 的示例代码:
示例 1:在浏览器和 Node.js 环境中获取全局对象
const globalObj = typeof window !== 'undefined' ? window : globalThis; console.log(globalObj);
这个代码片段可以在浏览器和 Node.js 环境中都能正常执行,并输出相应的全局对象。
示例 2:在浏览器和 Node.js 环境中使用 fetch API
const fetch = globalThis.fetch || require('node-fetch'); fetch('https://api.github.com/users/github') .then(response => response.json()) .then(data => console.log(data));
这个代码片段可以在浏览器和 Node.js 环境中都能正常执行,并使用相应的 fetch API。
总结
globalThis 是 ECMAScript 2020 中的一个重要新特性,它提供了一个单一的、跨平台的全局对象,在不同的环境中都能够使用。初学者应该掌握 globalThis 的使用方法,以便在编写跨平台代码时能够更加轻松地处理全局对象。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65816cb7d2f5e1655dca40b3