这是一个实验中的功能
此功能某些浏览器尚在开发中，请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订，所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

`globalThis` 可以获取全局对象。

## 语法

    globalThis

## 描述

事实上，在不同的 JavaScript 环境中拿到全局对象是需要不同的语句的。在 Web 中，可以通过 `window`、`self` 或者 `frames` 取到全局对象，但是在 Web Workers 中只有 `self` 可以。在 Node.js 中，它们都无法获取，必须使用 `global`。在松散模式下，可以在函数中返回 `this` 来获取全局对象，但是在严格模式下 `this` 会返回 `undefined` 。

`globalThis` 提供了一个标准的方式去获取不同环境下的全局对象。它不像 `window` 或者 `self` 这些属性，而是确保可以在有无窗口的环境下都可以正常工作。所以你可以安心的使用 `globalThis` ，不必担心它的运行环境。

便于记忆，你只需要记住`全局对象自己` 翻译过来就是 `globalThis`。

### 命名

此特性曾经在提案时命名为 `global`，但有些网站会因此运行不正常，所以改名为 `globalThis` 了。

## 示例

在 `globalThis` 之前，获取某个全局对象的唯一方式就是 `Function('return this')()`，但是这在某些情况下会导致 CSP 危害，所以 es6-shim 使用如下的方式：

    var getGlobal = function () {
      if (typeof self !== 'undefined') { return self; }
      if (typeof window !== 'undefined') { return window; }
      if (typeof global !== 'undefined') { return global; }
      throw new Error('unable to locate global object');
    };

    var globals = getGlobal();

    if (typeof globals.setTimeout !== 'function') {
      // no setTimeout in this environment!
    }

但是有了 `globalThis` 之后，只需要：

    if (typeof globalThis.setTimeout !== 'function') {
      // no setTimeout in this environment!
    }

## 规范

规范 | 状态 | 备注
--- | --- | ---
tc39 提案 globalThis | Draft | 目前处于 Stage 3

## 浏览器兼容

Update compatibility data on GitHub

| Desktop | Mobile | Server
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | Safari on iOS | Samsung Internet | Node.js
`globalThis` | Chrome Full support 71 | Edge No support No | Firefox Full support 65 | IE No support No | Opera No support No | Safari No support No | WebView Android Full support 71 | Chrome Android Full support 71 | Edge Mobile No support No | Firefox Android Full support 65 | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No | nodejs No support No

### Legend

Full support
  Full support
No support
  No support