在 ES11 中,引入了一个新的全局对象 globalThis,它可以在任何环境中访问全局作用域,包括浏览器、Node.js 等。
globalThis 的作用
在全局作用域中,可以使用 window、self、global、this 等对象访问全局作用域。然而,这些对象在不同的环境中可能不存在,导致代码不可移植性。而 globalThis 则是一个可移植的全局对象,可以在任何环境中使用。
例如,在浏览器中,可以使用以下方式访问全局作用域:
console.log(window); console.log(self); console.log(this);
而在 Node.js 中,则需要使用以下方式:
console.log(global); console.log(this);
使用 globalThis 则可以在任何环境中使用同样的方式访问全局作用域:
console.log(globalThis);
globalThis 的使用
globalThis 可以用于在不同的环境中编写可移植的代码。例如,如果需要在浏览器和 Node.js 中都使用 Promise,可以使用以下代码:
const Promise = globalThis.Promise || require('promise');
如果在浏览器环境中,globalThis.Promise 会指向 window.Promise;而在 Node.js 环境中,globalThis.Promise 不存在,需要使用 require 引入。
globalThis 的指导意义
globalThis 的引入,反映了 JavaScript 社区对于跨平台开发的关注。在多端开发、跨平台开发中,使用可移植的代码是非常重要的,可以提高代码的可复用性和可维护性。使用 globalThis,可以避免因为环境不同而导致的代码不可移植性问题。
示例代码
// 在浏览器和 Node.js 中使用可移植的 Promise const Promise = globalThis.Promise || require('promise'); // 在浏览器和 Node.js 中使用可移植的 fetch const fetch = globalThis.fetch || require('node-fetch'); // 在浏览器和 Node.js 中使用可移植的 WebSocket const WebSocket = globalThis.WebSocket || require('ws');
总结
全局对象 globalThis 的引入,提高了 JavaScript 代码的可移植性,可以在不同的环境中编写可移植的代码。在多端开发、跨平台开发中,使用可移植的代码是非常重要的,可以提高代码的可复用性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6601f0aed10417a222d39c7d