Brauzer muhiti va spetsifikatsiyalar
JavaScript tili dastlab veb-brauzer uchun yaratilgan. Ammo o'sha vaqtdan beri u ko'plab boshqa muhitlar va platformalarga tarqaldi. Muhit (platforma) brauzer, veb-server yoki hatto "aqlli" muzlatkich bo'lishi mumkin. Ularning har biri o'ziga xos funksionallikni taqdim etadi. JavaScript tilida bu muhitga xos qismlar host muhiti (host environment) deb ataladi. Ushbu darsda biz brauzer muhitini โ u bizga qanday imkoniyatlar berishini chuqur o'rganamiz.
Til yadrosi va muhit
JavaScript kodini ikki qatlamga bo'lib tasavvur qilish qulay:
- Til yadrosi (ECMAScript) โ bu
Array,Object,Math,String,Functionkabi tilning o'zi ta'riflaydigan asosiy imkoniyatlar. Ular har qanday muhitda bir xil ishlaydi. - Host muhiti โ bu muhit qo'shadigan qo'shimcha obyektlar va funksiyalar. Brauzerda bu
document,alert,fetchva boshqalar. Node.js'da esa fayl tizimi, tarmoq modullari va h.k.
Ya'ni til bir xil, ammo har bir host o'z "qo'shimchalarini" beradi. Brauzer bizga sahifani boshqarish uchun ko'plab maxsus obyektlar taqdim etadi.
document obyekti faqat brauzerda mavjud. Aksincha, faylni o'qish (fs moduli) faqat Node.js'da bor.window โ brauzerdagi ildiz (root) obyekti
Brauzer muhitida barcha imkoniyatlarni birlashtiruvchi ildiz (root) obyekt bor โ u window deb ataladi. Uning ikkita asosiy roli bor:
- Birinchidan, u JavaScript til yadrosining global obyekti hisoblanadi (biz uni tilning "Global obyekt" mavzusida ko'rgan edik).
- Ikkinchidan, u brauzer oynasini (browser window) ifodalaydi va uni boshqarish uchun metodlar taqdim etadi.
Masalan, biz uni global obyekt sifatida ishlatib, yuqori darajali (global) funksiyani chaqirishimiz mumkin:
function sayHi() {
alert('Salom');
}
// global funksiyalar window'ning metodi sifatida ham ko'rinadi
window.sayHi(); // Salom
Va uni brauzer oynasini ifodalaydigan obyekt sifatida ishlatib, oyna balandligini bilishimiz mumkin:
alert(window.innerHeight); // ichki oyna balandligi (piksellarda)
window obyektida oynaga oid yana ko'plab metod va xossalar bor, ular bilan keyingi bo'limlarda tanishamiz.
var bilan e'lon qilingan global o'zgaruvchilar windowning xossalari bo'ladi. Ammo let va const bunday emas! Bu zamonaviy standartning o'ziga xosligidir. Shuning uchun global miqyosda let/const ishlatilsa, ular window obyektida ko'rinmaydi.var gVar = 5;
alert(window.gVar); // 5 (var global obyektga qo'shildi)
let gLet = 5;
alert(window.gLet); // undefined (let qo'shilmaydi)
DOM (Document Object Model)
DOM (Document Object Model โ Hujjat Obyekt Modeli) sahifadagi barcha mazmunni o'zgartirishimiz mumkin bo'lgan obyektlar sifatida ifodalaydi. Uning markaziy "kirish nuqtasi" โ document obyekti.
Masalan, document.body โ bu <body> tegini ifodalovchi obyekt. Quyidagi kod sahifa fonini 3 soniyaga qizil qiladi:
// sahifa fonini qizil qilamiz
document.body.style.background = 'red';
// 3 soniyadan keyin qaytaramiz
setTimeout(() => document.body.style.background = '', 3000);
Bu yerda biz document.body.style.background orqali <body> tegining fon rangini o'zgartirdik. DOM yordamida biz istalgan elementni yaratishimiz, o'chirishimiz, ko'chirishimiz, mazmunini va uslubini o'zgartirishimiz mumkin.
jsdom kabi kutubxonalar) DOM'ning faqat bir qismini qo'llab-quvvatlashi mumkin.CSSOM โ uslublar uchun
CSS qoidalari va uslublar jadvallari (stylesheets) HTML tuzilishidan farqli ravishda ifodalanadi. Ular uchun alohida spetsifikatsiya bor โ CSSOM (CSS Object Model). U CSS qoidalarini qanday obyektlar sifatida ifodalash, ularni o'qish va yozishni tavsiflaydi.
CSSOM DOM bilan birga ishlatiladi. Ammo amaliyotda CSSOM kamdan-kam kerak bo'ladi, chunki odatda biz CSS qoidalarini JavaScript'dan emas, balki elementlarga class qo'shib/olib boshqaramiz. Shuning uchun bu kursda unga alohida to'xtalmaymiz.
BOM (Browser Object Model)
BOM (Browser Object Model โ Brauzer Obyekt Modeli) โ bu hujjatdan tashqari, brauzer bilan ishlash uchun qo'shimcha obyektlarni ifodalaydi. Masalan:
navigatorobyekti brauzer va operatsion tizim haqida ma'lumot beradi. Ko'plab xossalari bor, eng mashhurlari:navigator.userAgent(joriy brauzer haqida) vanavigator.platform(platforma: Windows, Linux, Mac va h.k.);locationobyekti joriy URL manzilini o'qish va brauzerni yangi manzilga yo'naltirish imkonini beradi;alert,confirm,promptfunksiyalari ham BOM qismidir โ ular hujjat bilan bevosita bog'liq emas, balki brauzer bilan foydalanuvchi o'rtasidagi muloqot vositalaridir.
alert(location.href); // joriy URL manzilini ko'rsatadi
if (confirm('Wikipedia'ga o'tamizmi?')) {
location.href = 'https://wikipedia.org'; // brauzerni boshqa URL'ga yo'naltirish
}
alert, prompt va confirm โ bular ham BOM'ning bir qismi, chunki ular to'g'ridan-to'g'ri hujjatga tegishli emas, balki brauzerning umumiy funksiyalaridir.
Spetsifikatsiyalar
BOM umumiy HTML spetsifikatsiyasining bir qismidir. Ha, to'g'ri eshitdingiz. HTML spetsifikatsiyasi https://html.spec.whatwg.org manzilida joylashgan bo'lib, u nafaqat "HTML tili" (teglar, atributlar) haqida, balki turli obyektlar, metodlar va brauzerga xos DOM kengaytmalari haqida ham gapiradi. Bu "keng ma'nodagi HTML".
Bizni qiziqtiruvchi asosiy spetsifikatsiyalar:
- DOM spetsifikatsiyasi โ hujjat tuzilishini, uni boshqarish va hodisalarni tavsiflaydi. Manzil: https://dom.spec.whatwg.org.
- CSSOM spetsifikatsiyasi โ uslublar jadvallari va CSS qoidalari, ular bilan manipulyatsiya va ularning HTML bilan bog'liqligini tavsiflaydi. Manzil: https://www.w3.org/TR/cssom-1/.
- HTML spetsifikatsiyasi โ HTML tili (teglar va h.k.) va shuningdek BOM (brauzer obyekt modeli) โ
setTimeout,alert,locationva boshqalar. U DOM spetsifikatsiyasini olib, uni ko'plab qo'shimcha xossa va metodlar bilan kengaytiradi. Manzil: https://html.spec.whatwg.org.
MDN [atama] deb yozing, masalan MDN parseInt. Bu sizni to'g'ridan-to'g'ri MDN ma'lumotnomasiga olib boradi.Xulosa
Brauzer JavaScript'ga sahifa bilan ishlash uchun boy imkoniyatlar beradi. Uni bir necha qismga bo'lib eslab qolamiz:
- window โ brauzerdagi ildiz obyekt: ham global obyekt, ham brauzer oynasini ifodalaydi;
- DOM โ hujjat mazmuni (obyektlar sifatida). Kirish nuqtasi โ
document. DOM spetsifikatsiyasida tavsiflangan; - CSSOM โ CSS qoidalari va uslublar jadvallarini obyektlar sifatida boshqaradi;
- BOM โ brauzerning boshqa funksiyalari:
navigator,location,screen,alert/confirm/prompt,setTimeoutva h.k. HTML spetsifikatsiyasida tavsiflangan; - Til yadrosi (ECMAScript) esa muhitdan mustaqil, u har joyda bir xil ishlaydi.