JavaScript prototip va meros zanjiri

Klasslar darsida metodlar bir joyda saqlanishini ko’rgan edik. Endi shu mexanizmning o’ziga qaraymiz — u JavaScript’ni boshqa tillardan ajratib turadi.

Xossa qayerdan topiladi

JavaScript

toString va hasOwnProperty ni biz yozmadik, lekin ular bor. Chunki obyekt xossani o’zida topa olmasa, prototipiga qaraydi.

Zanjirni ko’rish

JavaScript

Zanjir null bilan tugaydi — bu izlashning oxiri.

Massivning zanjiri

JavaScript

map massivning o’zida emas — Array.prototype da. Barcha massivlar shu bitta funksiyani baham ko’radi.

Object.create — prototipni qo’lda belgilash

JavaScript

it da faqat nom bor, ovoz esa prototipdan olindi.

Prototipni o’zgartirish — zanjir jonli

JavaScript

xayr obyekt yaratilgandan keyin qo’shildi, lekin baribir ko’rindi — zanjir nusxa emas, jonli bog’lanish.

Xossa berish — zanjirga tegmaydi

JavaScript

O’zlashtirish har doim obyektning o’zida yangi xossa yaratadi. Prototipdagi qiymat “to’siladi”, lekin o’zgarmaydi — o’chirilganda yana ko’rinadi.

O’ziniki yoki merosmi

JavaScript

Farq muhim: in va for...in zanjirni ham ko’radi, Object.keys va Object.hasOwn — faqat obyektning o’zini.

Klass — prototip ustidagi qobiq

Klass yozuvi yangi mexanizm emas, mavjudining qulay shakli:

JavaScript

Ko’rinib turibdi: ism obyektda, salom esa Talaba.prototype da.

Konstruktor funksiya — eski uslub

Klasslardan oldin shunday yozilardi:

JavaScript

Natija klass bilan bir xil. Eski kodni o’qishda bu shakl uchraydi.

Meros zanjiri

JavaScript

Zanjir: tTalaba.prototypeInson.prototypeObject.prototypenull. Meros shu zanjirni quradi.

Prototipsiz obyekt

JavaScript

Zanjirsiz obyekt — sof lug’at. Kalitlar toString kabi merosiy nomlar bilan to’qnashmaydi.

Amaliy mashq

  1. Obyekt yaratib, Object.getPrototypeOf bilan zanjirni ko’ring;
  2. Object.create bilan prototipli obyekt yasang;
  3. prototipga metod qo’shib, mavjud obyektda ko’ringanini tasdiqlang;
  4. prototipdagi xossani obyektda “to’sib”, keyin delete qiling;
  5. in, Object.hasOwn va Object.keys natijasini solishtiring;
  6. klass yozib, metod prototype da ekanini tekshiring.

Qisqacha xulosa

  • Har obyekt prototip bilan bog’langan; xossa u yerdan izlanadi.
  • Zanjir null bilan tugaydi.
  • Object.create(asos) prototipni qo’lda belgilaydi.
  • O’zlashtirish doim obyektning o’zida yangi xossa yaratadi.
  • in/for...in zanjirni ko’radi; Object.keys/hasOwn — faqat o’zini.
  • Klass — prototip mexanizmi ustidagi qulay yozuv.

Keyingi darsda event loop — JavaScript navbat tizimi.

Bu dars foydali bo'ldimi?

marta ko'rildi