Skip to main content

Глобальний об'єкт

Що таке глобальний об'єкт

Глобальний об'єкт - це спеціальний об'єкт, який існує завжди, незалежно від середовища (браузер, Node.js тощо). Він представляє глобальну область, у якій перебувають усі глобальні змінні та функції.

Простіше кажучи:

Глобальний об'єкт - це «контейнер», у якому живуть усі змінні й функції, оголошені поза функціями та модулями.


Приклади глобальних об'єктів у різних середовищах

СередовищеГлобальний об'єкт
Браузерwindow або self
Web Workerself
Node.jsglobal
Сучасний універсальний спосібglobalThis

Приклад: браузер

javascript
var x = 10; console.log(window.x); // 10 console.log(this.x); // 10 (у глобальній області)

Змінна x, оголошена через var, автоматично стає властивістю глобального об'єкта window.


Приклад: Node.js

javascript
var y = 5; console.log(global.y); // undefined

У Node.js змінні var, let, const не додаються в global, тому що Node.js використовує модульну систему (кожен файл - окремий модуль, не глобальний скрипт).


Універсальний спосіб: globalThis

ES2020 запровадив новий стандарт - globalThis, який працює однаково в усіх середовищах.

javascript
console.log(globalThis);

Працює:

  • у браузері → window
  • у Node.js → global
  • у web worker → self

Взаємозв'язок з контекстом виконання

Коли створюється глобальний контекст виконання, рушій JS:

  1. створює глобальний об'єкт;
  2. встановлює this як посилання на цей об'єкт (якщо не використовується strict mode);
  3. поміщає туди всі глобальні оголошення (var, function).

Приклад:

javascript
var a = 42; function sayHi() { console.log("Hi"); } console.log(globalThis.a); // 42 globalThis.sayHi(); // "Hi"

Відмінність let і const від var

Змінні, оголошені через let і const:

  • не стають властивостями глобального об'єкта,
  • але все одно існують у глобальній області видимості.

Приклад:

javascript
let a = 10; var b = 20; console.log(window.a); // undefined console.log(window.b); // 20

Підсумок

ОсобливістьОпис
Що цеОб'єкт верхнього рівня, що існує завжди
Де живеУ глобальному контексті виконання
Автоматично міститьГлобальні функції (setTimeout, fetch, console, ...)
Як звернутисяwindow (браузер), global (Node.js), globalThis (універсально)
Особливості let/constНе стають властивостями глобального об'єкта

Приклад використання globalThis на практиці

javascript
globalThis.appName = "DemoApp"; function printName() { console.log(globalThis.appName); } printName(); // "DemoApp"

Працює і в браузері, і в Node.js, і в будь-якому середовищі.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.