JavaScript klasslar (class, constructor)
Bitta obyekt yaratish oson. Ammo yuzta bir xil tuzilishdagi obyekt kerak bo’lsa — har birini qo’lda yozish mumkin emas. Klass shu obyektlar uchun shablon beradi.
Muammo: takrorlanadigan obyektlar
const t1 = { ism: "Aziz", ball: 85, holat() { return this.ball >= 60; } };
const t2 = { ism: "Dilnoza", ball: 92, holat() { return this.ball >= 60; } };
Tuzilma bir xil, metod har obyektda qayta yozilgan. Shablon kerak.
Birinchi klass
new nima qiladi
new Talaba("Aziz", 85) uch qadamni bajaradi:
- bo’sh obyekt yaratadi;
- uni
thisqilibconstructorni chaqiradi; - shu obyektni qaytaradi.
new ni unutish — keng uchraydigan xato:
Metodlar umumiy saqlanadi
true chiqdi — metod har obyektda nusxalanmaydi, bitta joyda saqlanadi.
Xotira tejaladi. Bu mexanizm prototip darsida
ochiladi.
Standart qiymat va tekshiruv
Constructor — ma’lumot to’g’riligini tekshirish uchun eng mos joy.
Getter va setter
Xossa kabi ko’rinadigan, lekin funksiya bo’lgan a’zolar:
a.yuza — qavssiz chaqirilyapti, lekin har safar qaytadan hisoblanadi.
set esa o’zlashtirishni ushlab, boshqa xossani yangiladi.
Maxfiy xossalar
# bilan boshlangan xossaga tashqaridan tegib bo’lmaydi:
Object.keys maxfiy xossani ko’rsatmadi — #balans faqat klass ichida
mavjud. Tashqarida h.#balans deb yozish esa umuman sintaksis xatosi:
kod ishga ham tushmaydi.
Bu closure bilan erishilgan yopiqlikning klassdagi rasmiy shakli.
static — klassning o’zida
static a’zolar klassga tegishli, obyektga emas — new shart emas.
Ko’pincha yordamchi funksiyalar va sanoqlar uchun ishlatiladi.
Amaliy mashq
Kitobklassini yozing:nom,muallif,yil;tavsif()metodini qo’shing;- constructor’da
yilni tekshiring — kelajakdagi sana bo’lsa xato bering; get yoshigetter qo’shing (hozirgi yildan ayirsin);#nusxalarmaxfiy xossasi va uni oshiruvchi metod yozing;static taqqosla(a, b)bilan ikki kitobni yil bo’yicha solishtiring.
Qisqacha xulosa
- Klass — obyektlar uchun shablon;
newbilan nusxa yaratiladi. constructorboshlang’ich xossalarni o’rnatadi va tekshiruv uchun mos joy.- Metodlar barcha nusxalar uchun bitta joyda saqlanadi.
get/setxossa ko’rinishidagi funksiyalar beradi.#maxfiy xossa — tashqaridan murojaat qilib bo’lmaydi.statica’zolar klassning o’ziga tegishli.
Keyingi darsda meros — klasslarni kengaytirish.