JavaScript Proxy va Reflect
Obyektdan xossa o’qilganda yoki unga qiymat berilganda oralikka tushib,
o’z qoidangizni qo’yish mumkin. Buni Proxy bajaradi — zamonaviy
kutubxonalarning ko’p “sehri” shu ustiga qurilgan.
Birinchi Proxy
set — yozishni nazorat qilish
Validatsiya obyektning o’zida joylashdi — uni ishlatadigan har bir joyda qayta yozish shart emas.
Yo’q xossa uchun standart qiymat
undefined o’rniga ma’noli qiymat — sozlamalar bilan ishlashda qulay.
Maxfiy xossalarni yashirish
Uch tuzoq birga ishladi: o’qish taqiqlandi, in yolg’on qaytardi va
Object.keys ro’yxatdan chiqardi.
Reflect — standart xatti-harakat
Nega Reflect Proxy bilan birga
nishon[kalit] o’rniga Reflect.get ishlatish to’g’riroq: u this
bog’lanishini (qabul argumenti) saqlaydi va set uchun kerakli
true/false ni o’zi qaytaradi.
Amaliy misol — o’zgarishlarni kuzatish
Bu — Vue kabi freymvorklardagi reaktivlikning soddalashtirilgan mohiyati: ma’lumot o’zgarganda interfeys avtomatik yangilanadi.
Manfiy indeks
Python’dagi kabi manfiy indeks JavaScript’da yo’q — Proxy uni qo’shdi.
Cheklovlar
Amaliy mashq
gettuzog’i bilan har o’qishni log qiling;setbilan yosh maydonini tekshiring;- yo’q xossa uchun standart qiymat qaytaring;
_bilan boshlangan xossalarni yashiring;Reflect.getvaReflect.setni tuzoqlarda ishlating;- o’zgarishlarni kuzatuvchi obyekt yasang.
Qisqacha xulosa
- Proxy obyekt oldiga qobiq qo’yib, murojaatlarni ushlaydi.
- Asosiy tuzoqlar:
get,set,has,deleteProperty,ownKeys. settuzog’itrueqaytarishi shart.- Reflect standart amallarni funksiya ko’rinishida beradi.
- Tuzoq ichida
Reflectishlatish to’g’ri xatti-harakatni saqlaydi. - Proxy sekinroq va maxfiy
#xossalar bilan ishlamaydi.
Keyingi darsda modul tizimi va bundler — kodni yig’ish va tarqatish.