A propriedade global globalThis retorna um objeto global de nível superior.

Sintaxe

globalThis

Descrição

Historicamente, o acesso ao escopo global exigiu uma sintaxe diferente em diferentes ambientes JavaScript. Na web você pode usar window, self ou frames - porém em Web Workers somente self funcionará. Em Node.js nada disso funciona e você deve usar global.
A palavra-chave this poderia ser usada dentro de funções em execução no modo sloppy, mas this será undefined em módulos, e dentro de funções em execução no strict mode.

A propriedade globalThis fornece uma maneira padrão de acessar o objeto global entre ambientes. Ao contrário de propriedades semelhantes, como window e self, é garantido que funcione em contextos window e non-window. Dessa forma, você pode acessar o objeto global de maneira consistente sem precisar saber em qual ambiente o código está sendo executado.

Para ajudá-lo a lembrar o nome, lembre-se que no escopo global, o valor de this é globalThis.

Nome

Várias outras opções de nomes populares, como self e global foram removidas da discussão devido ao seu potencial em quebrar a compatibilidade com o código existente.

Exemplos

Antes de globalThis, a única maneira confiável de obter o objeto global para um ambiente era Function('return this')(). No entanto, isso causa violações CSP em algumas configurações, então es6-shim usa uma verificação como essa, por exemplo:

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') { 
  // sem setTimeout neste ambiente!
}

Com globalThis disponível, a busca global adicional entre ambientes não é mais necessária:

if (typeof globalThis.setTimeout !== 'function') {
  // sem setTimeout neste ambiente!
}

Especificações

Especificação Status Comentário
globalThis proposal Stage 3  

Compatibilidade entre navegadores

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support 71Edge No support NoFirefox Full support 65IE No support NoOpera No support NoSafari No support NoWebView Android Full support 71Chrome Android Full support 71Edge Mobile No support NoFirefox Android Full support 65Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

Full support  
Full support
No support  
No support

Etiquetas do documento e colaboradores

Colaboradores desta página: mdnwebdocs-bot, Rondinelly
Última atualização por: mdnwebdocs-bot,