ES2020 中新增加的 globalThis 对象,可以在任何运行环境中访问全局对象,如浏览器中的 window 对象,Node.js 中的 global 对象。在前端开发中,我们经常需要在不同的全局对象上面调用函数,属性等内容,使用 globalThis 对象可以消除访问全局对象的困惑,使得代码更加简洁和易于维护。
globalThis 的使用
使用 globalThis 可以在任何地方访问全局对象,无需关心当前上下文是哪个。比如,我们可以使用以下代码在浏览器和 Node.js 的控制台中获取全局对象:
console.log(globalThis);
在浏览器中,该代码将返回 window 对象,在 Node.js 中,该代码将返回 global 对象。
我们也可以使用 globalThis 对象在不同的上下文中访问全局属性。以下是获取当前脚本的 URL 的示例代码:
const url = globalThis.location.href || globalThis.document.baseURI; console.log(url);
在浏览器中,这段代码将返回当前网址,而在 Node.js 中,它将返回 undefined,因为 Node.js 中没有 location 对象。
globalThis 的指导意义
使用 globalThis 可以帮助我们编写更加通用的代码,并且可以减少在不同上下文中使用全局对象时产生的困扰。如果您的代码需要在不同的全局对象下运行,那么使用 globalThis 可能是一种更好的方式。
但是,使用 globalThis 也有一些限制。在某些情况下,您可能需要在特定的环境中使用全局对象,或者您可能需要了解当前上下文的更多信息。此外,globalThis 特性还不被所有浏览器和 Node.js 版本支持,因此在编写代码之前,您需要检查您的目标浏览器和 Node.js 版本是否已经支持 globalThis。
示例代码
以下代码演示了如何使用 globalThis 对象调用不同的全局对象的属性。
function getValue() { return globalThis.name || globalThis.process.argv[2] || 'default'; } console.log(getValue()); // Will print the global object name or command line argument or "default"
总结
在本文中,我们学习了如何使用 ES2020 中的 globalThis 对象来访问不同的全局对象,以及如何在前端开发中使用 globalThis。使用 globalThis 可以帮助我们编写更加通用的代码,但是也需要谨慎使用。希望本文能够对前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646121f3968c7c53b029fc00