Global obyekt

Oldingi bo‘limlar JavaScript'ning primitiv tiplari va qiymatlarini tushuntirib o'tdi. Obyekt tiplari — obyektlar, massivlar va funksiyalar — kitobning keyingi boblarida alohida ko‘rib chiqiladi. Lekin hozir biz tanishib chiqishimiz shart bo‘lgan juda muhim bir obyekt qiymati bor. Global obyekt — bu juda muhim vazifani bajaradigan oddiy JavaScript obyektidir: bu obyektning xossalari JavaScript dasturi uchun ochiq bo‘lgan, global miqyosda aniqlangan identifikatorlardir. JavaScript interpretatori ishga tushganda (yoki veb-brauzer yangi sahifa yuklaganda), u yangi global obyekt yaratadi va unga quyidagilarni aniqlaydigan boshlang‘ich xossalar to‘plamini beradi:

  • undefined, Infinity va NaN kabi global konstantalar
  • isNaN(), parseInt() (§3.9.2) va eval() (§4.12) kabi global funksiyalar
  • Date(), RegExp(), String(), Object() va Array() (§3.9.2) kabi konstruktor funksiyalar
  • Math va JSON (§6.8) kabi global obyektlar

Global obyektning boshlang‘ich xossalari zaxiralangan so‘zlar emas, lekin ularga xuddi shunday munosabatda bo‘lish lozim. Ushbu bobda bu global xossalarning ba’zilari allaqachon tasvirlab berildi. Qolganlarining aksariyati kitobning boshqa qismlarida yoritiladi.

Global obyektga murojaat qilish

Node'da global obyektning global nomli xossasi mavjud bo‘lib, uning qiymati global obyektning o‘zidir. Shuning uchun Node dasturlarida siz har doim global obyektga global nomi orqali murojaat qilishingiz mumkin.

Veb-brauzerlarda esa, Window obyekti u ifodalaydigan brauzer oynasi ichidagi barcha JavaScript kodlari uchun global obyekt vazifasini bajaradi. Bu global Window obyektining o‘ziga ishora qiluvchi window xossasi mavjud bo‘lib, u orqali global obyektga murojaat qilish mumkin. Window obyekti asosiy global xossalarni aniqlash bilan birga, veb-brauzerlar va klient tomonidagi JavaScript uchun xos bo‘lgan ancha ko‘p boshqa globallarni ham aniqlaydi. Veb-vorker oqimlari (Web worker threads, §15.13) o‘zlari bog‘langan Window'nikidan farqli global obyektga ega. Vorkerdagi kod o‘zining global obyektiga self orqali murojaat qilishi mumkin.

Nihoyat, ES2020 globalThis'ni har qanday kontekstda global obyektga murojaat qilishning standart usuli sifatida belgiladi. 2020-yil boshiga kelib, bu xususiyat barcha zamonaviy brauzerlar va Node tomonidan implementatsiya qilingan.