在 JavaScript 中,window
对象是全局对象,它包含了浏览器环境下的所有全局变量和函数。但在 Node.js 中,全局对象是 global
。这两个对象的存在导致了一些跨平台的问题,例如在浏览器和 Node.js 中使用相同的代码时,需要写两份不同的全局对象。ES2019 引入了一个新的全局对象 globalThis
来解决这个问题。
globalThis 的作用
globalThis
是一个全局对象,它在任何情况下都可以访问,无需使用任何前缀。在浏览器环境下,globalThis
就是 window
对象;在 Node.js 环境下,globalThis
就是 global
对象。因此,通过 globalThis
可以跨平台地访问全局对象,而不需要写两份不同的代码。
globalThis 的用法
使用 globalThis
与使用 window
或 global
非常相似。下面是一些常见用法:
1. 访问全局对象
console.log(globalThis); // 在浏览器中输出 window 对象,在 Node.js 中输出 global 对象
2. 定义全局变量或函数
globalThis.myVar = 'Hello, world!'; globalThis.myFunc = function() { console.log('Hello, world!'); };
3. 在不同的平台上使用相同的代码
const globalObj = typeof window !== 'undefined' ? window : globalThis; globalObj.myVar = 'Hello, world!'; globalObj.myFunc = function() { console.log('Hello, world!'); };
globalThis 的指导意义
使用 globalThis
可以让我们更轻松地编写跨平台的代码,同时避免写两份不同的代码。此外,globalThis
还有一个重要的作用,那就是在浏览器环境下,可以避免使用 window
对象,从而避免一些不必要的错误。
总结
ES2019 引入了一个新的全局对象 globalThis
,它可以跨平台地访问全局对象,避免写两份不同的代码。使用 globalThis
可以让我们更轻松地编写跨平台的代码,并避免一些不必要的错误。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655979c9d2f5e1655d3e272a