在 ES11 中,新增了一个全局对象 globalThis,它是一个全局的对象,代表了全局环境下的 this 值。在浏览器中,globalThis 指向全局的 window 对象,而在 Node.js 中,globalThis 指向全局的 global 对象。
globalThis 的作用
globalThis 的作用主要有以下几个方面:
在不同的环境中获取全局对象,避免了在不同环境下使用不同的全局对象的问题。
在不同的环境中获取全局对象的属性和方法,避免了在不同环境下使用不同的全局对象的属性和方法的问题。
在不同的环境中使用 eval 函数时,可以通过 globalThis 来获取全局对象,避免了在不同环境下使用不同的全局对象的问题。
globalThis 的使用
使用 globalThis 可以避免在不同的环境下使用不同的全局对象的问题。例如,在浏览器中,我们可以使用以下代码来获取全局的 window 对象:
const globalObject = typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : typeof global !== 'undefined' ? global : {};
而在 Node.js 中,我们可以使用以下代码来获取全局的 global 对象:
const globalObject = typeof global !== 'undefined' ? global : {};
使用 globalThis 可以简化以上代码,只需要使用以下代码即可:
const globalObject = globalThis;
globalThis 的示例
下面是一个使用 globalThis 的示例代码:
function getGlobalObject() { return globalThis; } const globalObject = getGlobalObject(); globalObject.console.log('Hello, globalThis!');
在浏览器中运行以上代码,会输出 "Hello, globalThis!",在 Node.js 中运行以上代码,也会输出 "Hello, globalThis!"。
总结
ES11 中新增的 globalThis 对象,可以避免在不同的环境下使用不同的全局对象的问题,使得在不同环境下的代码更加通用。在实际开发中,我们可以使用 globalThis 来获取全局对象,避免了代码在不同环境下的兼容性问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65ffeaf3d10417a222b29fc6