在前端开发中,我们经常会遇到跨平台的代码问题,例如在浏览器和 Node.js 环境下,全局对象的名称不同,这导致我们需要写两份代码来适配不同的环境。但是,ES12 中新增了一个全局对象 globalThis,它可以帮助我们解决这个问题。
globalThis 的作用
在 ES6 之前,我们可以使用 window 对象来访问浏览器环境下的全局对象,而在 Node.js 环境下,我们可以使用 global 对象。但是这种方式有一个缺点,就是代码在不同环境下的兼容性比较差。
ES12 中新增的 globalThis 对象可以在任何环境下都能访问到全局对象,而且它的名称是固定的,不会因为环境的不同而改变。这意味着我们可以使用同一份代码来适配不同的环境,而不需要写两份代码。
globalThis 的使用
使用 globalThis 对象非常简单,只需要在代码中使用 globalThis 关键字即可。例如,我们可以使用以下代码来访问全局对象:
const globalObject = typeof globalThis !== 'undefined' ? globalThis : window;
这段代码会先判断当前环境是否支持 globalThis 对象,如果支持则使用 globalThis 对象,否则使用 window 对象。这样我们就可以在任何环境下都能访问全局对象了。
globalThis 的示例代码
下面是一个示例代码,用于在浏览器和 Node.js 环境下创建一个全局变量:
// 适配浏览器和 Node.js 环境下的全局对象 const globalObject = typeof globalThis !== 'undefined' ? globalThis : window; // 在全局对象中创建一个变量 globalObject.myVariable = 'Hello, world!'; // 在控制台输出变量的值 console.log(myVariable);
这段代码会先使用 globalThis 对象或 window 对象来访问全局对象,然后在全局对象中创建一个变量 myVariable,并将其值设置为 'Hello, world!'。最后在控制台输出变量的值。
总结
ES12 中新增的 globalThis 对象可以帮助我们解决跨平台的代码问题,使得我们可以使用同一份代码来适配不同的环境。使用 globalThis 对象非常简单,只需要在代码中使用 globalThis 关键字即可。希望这篇文章对你有所帮助,让你更好地理解和使用 globalThis 对象。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658e6ebbeb4cecbf2d4488bd