internals/root.js

import { globalThisExisted, globalExisted, selfExisted } from './native';
const freeGlobalThis = globalThisExisted && globalThis.Object === Object && globalThis;
const freeGlobal = globalExisted && global.Object === Object && global;
const freeSelf = selfExisted && self.Object === Object && self;
/**
 * 全局对象。
 *
 * 不同的 JavaScript 环境都可以获取到对应的全局对象:
 * 1. Web 中等同于 `globalThis` / `window` / `self` / `frames` (兼容旧浏览器)
 * 2. Node.js 中等同于 `globalThis` / `global` (兼容低版本 Node.js)
 * 3. Web Workers 中等同于 `self`
 *
 * @static
 * @since 1.10.0
 * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/globalThis globalThis}
 */
const root = freeGlobalThis || freeGlobal || freeSelf || Function('return this')();
export default root;