概述
在浏览器环境中,程序引擎需要访问全局对象,一般情况下可以使用 window 或 self 对象。在 Node.js 环境中,可以使用 global 对象。但这些对象都不是标准的全局对象,有时在不同环境中需要使用不同的方法访问全局对象,给跨平台开发带来了一定的困扰。
在 ES11 中,新增了 globalThis 全局对象,它是一个标准化的全局对象,提供了一个统一的访问方式,无论是在浏览器环境还是 Node.js 环境下都可以使用它来访问全局对象。
使用方法
在任何地方使用 globalThis 对象都可以访问到全局对象,包括浏览器环境和 Node.js 环境。
在浏览器环境中:
console.log(globalThis === window); // true console.log(globalThis === self); // true
在 Node.js 环境中:
console.log(globalThis === global); // true
示例
下面的示例中,我们使用 globalThis 对象访问全局对象,并演示如何在不同环境中使用相同代码。
在浏览器环境中:
globalThis.myGlobalVar = 'hello world'; console.log(myGlobalVar); // 'hello world'
在 Node.js 环境中:
// 这里我们需要先定义一个全局变量,以便示例代码可以运行 global.myGlobalVar = ''; globalThis.myGlobalVar = 'hello world'; console.log(myGlobalVar); // 'hello world'
在上面的例子中,我们复用了相同的代码,并且不需要使用不同的方法访问全局对象。这样可以使代码更加简洁和具有可移植性。
总结
ES11 增加了 globalThis 全局对象,为跨平台开发提供了一种标准的访问方法。使用 globalThis 可以使代码更加简洁和具有可移植性。如果你的项目需要支持多个环境,可以考虑使用 globalThis 对象来访问全局对象。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e2d701f6b2d6eab3e21426