Что можно использовать вместо window

Ответ

Вместо 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. И будет тебе счастье, а не волнение ебать, где что сломается. Всё гениальное — просто, иногда до охуения.