--- title: globalThis slug: Web/JavaScript/Reference/Global_Objects/globalThis tags: - JavaScript - Reference - global - globalThis translation_of: Web/JavaScript/Reference/Global_Objects/globalThis ---
A propriedade global globalThis retorna um objeto global de nível superior.
globalThis
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.
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.
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ção | Status | Comentário |
|---|---|---|
| globalThis proposal | Stage 3 |
{{Compat("javascript.builtins.globalThis")}}