Ответ
Вместо window можно использовать:
globalThis- универсальный способ доступа к глобальному объекту в любом окружении (браузер, Node.js, Web Workers).self- работает в браузерах и Web Workers.global- в Node.js.this- в глобальной области видимости (но не в strict mode).
Пример:
// Браузер
console.log(globalThis === window); // true
// Node.js
console.log(globalThis === global); // true
Используй globalThis для кросс-платформенного кода.
Ответ 18+ 🔞
Смотри, вот тебе классическая история, как люди на ровном месте себе проблемы находят. Представь, пишешь ты код, и вдруг — бац! — нужно до глобального объекта дотянуться. А что такое этот глобальный объект? Ну, в браузере — это window, святая святых, где всё твоё барахло висит.
И тут ты такой: "О, window, мой старый дружок!" И пишешь везде window.setTimeout, window.console.log. А потом приходит какой-то умник и говорит: "А давайте запустим это в Node.js!" И всё, пиздец. Потому что в Node.js нет никакого window, там global. И твой код, как дурак, начинает орать: "ReferenceError: window is not defined, иди нахуй!".
И сидишь ты, чешешь репу: "Ёпта, ну как же так? Я ж не виноват, что они везде по-разному называются!"
А выход-то, блядь, простой, как три копейки. Есть такая штука — globalThis. Это как универсальный пульт от всех телевизоров. Хоть в браузере, хоть в Ноде, хоть в воркере — везде он указывает на того самого "большого босса", глобальный объект.
Смотри, как это работает, реально магия:
// В браузере
console.log(globalThis === window); // true, ёбана!
// В Node.js
console.log(globalThis === global); // true, вот же ж хитрая жопа!
А ещё есть self (работает в браузерах и воркерах) и просто global для Ноды. И даже this в нестрогом режиме в глобальной области видимости сработает, но на это лучше не рассчитывать, а то охуеешь потом, когда всё посыпется.
Так что мораль, блядь, какая? Хочешь писать код, который не сдохнет, переезжая с одной платформы на другую — юзай globalThis. И будет тебе счастье, а не волнение ебать, где что сломается. Всё гениальное — просто, иногда до охуения.