Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
globalThis
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since janeiro de 2020.
A propriedade globalglobalThis retorna um objeto global de nível superior.
In this article
Experimente
function canMakeHTTPRequest() { return typeof globalThis.XMLHttpRequest === "function";}console.log(canMakeHTTPRequest());// Expected output (in a browser): trueSintaxe
globalThis
Descrição
Historicamente, o acesso ao escopo global exigiu uma sintaxe diferente em diferentes ambientes JavaScript. Na web você pode usarwindow,self ouframes - porém emWeb Workers somenteself funcionará. Em Node.js nada disso funciona e você deve usarglobal.A palavra-chavethis poderia ser usada dentro de funções em execução no modosloppy, masthis seráundefined em módulos, e dentro de funções em execução nostrict mode.
A propriedadeglobalThis fornece uma maneira padrão de acessar o objeto global entre ambientes. Ao contrário de propriedades semelhantes, comowindow eself, é garantido que funcione em contextoswindow enon-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 dethis églobalThis.
Nome
Várias outras opções de nomes populares, comoself eglobal foram removidas da discussão devido ao seu potencial em quebrar a compatibilidade com o código existente.
Exemplos
Antes deglobalThis, a única maneira confiável de obter o objeto global para um ambiente eraFunction('return this')(). No entanto, isso causa violaçõesCSP em algumas configurações, entãoes6-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!}ComglobalThis 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 |