globalThis
hace referencia al objeto global, sin importar el contexto en el que se encuentre tu código.
button.addEventListener("click", function() {
console.log(this); // button
console.log(globalThis); // window
})
Esto cambia dependiendo el entorno en el que se esté ejecutando el código, pues en node.js
, el objeto global es global
, en web workers es self
y en el navegador es window
.
La verificación más popular que se usaba para determinar el objeto global era la siguiente:
const getGlobal = function () {
if (typeof window !== "undefined") { return window; } // Navegador
if (typeof self !== "undefined") { return self; } // En Web Workers
if (typeof global !== "undefined") { return global; } // En Node.js
};
let global = getGlobal();
if (typeof global.alert === "function") {
console.log("Entorno del navegador");
} else {
console.log("Entorno de Node.js");
};
Ahora esa misma verificación, se puede hacer de la siguiente manera:
if (typeof globalThis.alert === "function") {
console.log("Entorno del navegador");
} else {
console.log("Entorno de Node.js");
}
JavaScript se utiliza cada vez más en una amplia variedad de entornos. Cada entorno propia sintaxis para tener acceso al objeto global. Estas diferentes formas de hacer referencia al objeto global han hecho que sea difícil escribir código JavaScript multiplataforma. Afortunadamente, con globalThis
solucionamos este problema.
Si quieres aprender más sobre this
te dejo los siguientes artículos: