ES11新增特性,代表全局对象(所有环境都是)

    • 如浏览器中等于window,node中等于global

    设计理由
    JS语言越来越多被用于各种环境中,处最常见的浏览器,还可以在服务器、手机、甚至硬件上运行。每个环境都有自己的全局对象模型,且访问的语法都不相同。
    如在浏览器中,可以通过window、self或frames访问全局对象。NodeJs中,必须使用global。在Web Worker中,只有self可用。
    不同的全局对象引用方式让JS实现跨段变得困难,但ES11中引入了一个名为 globalThis 的标准属性来解决问题。
    globalThis 提供了一个标准的方式来获取不同环境下的全局对象,可以确保在各种环境下正常工作。

    1. // 浏览器环境
    2. console.log(globalThis); // => Window {...}
    3. // node.js 环境
    4. console.log(globalThis); // => Object [global] {...}
    5. // web worker 环境
    6. console.log(globalThis); // => DedicatedWorkerGlobalScope {...}