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

JavaScript

set — yozishni nazorat qilish

JavaScript

Validatsiya obyektning o’zida joylashdi — uni ishlatadigan har bir joyda qayta yozish shart emas.

Yo’q xossa uchun standart qiymat

JavaScript

undefined o’rniga ma’noli qiymat — sozlamalar bilan ishlashda qulay.

Maxfiy xossalarni yashirish

JavaScript

Uch tuzoq birga ishladi: o’qish taqiqlandi, in yolg’on qaytardi va Object.keys ro’yxatdan chiqardi.

Reflect — standart xatti-harakat

JavaScript

Nega Reflect Proxy bilan birga

JavaScript

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

JavaScript

Bu — Vue kabi freymvorklardagi reaktivlikning soddalashtirilgan mohiyati: ma’lumot o’zgarganda interfeys avtomatik yangilanadi.

Manfiy indeks

JavaScript

Python’dagi kabi manfiy indeks JavaScript’da yo’q — Proxy uni qo’shdi.

Cheklovlar

Amaliy mashq

  1. get tuzog’i bilan har o’qishni log qiling;
  2. set bilan yosh maydonini tekshiring;
  3. yo’q xossa uchun standart qiymat qaytaring;
  4. _ bilan boshlangan xossalarni yashiring;
  5. Reflect.get va Reflect.set ni tuzoqlarda ishlating;
  6. o’zgarishlarni kuzatuvchi obyekt yasang.

Qisqacha xulosa

  • Proxy obyekt oldiga qobiq qo’yib, murojaatlarni ushlaydi.
  • Asosiy tuzoqlar: get, set, has, deleteProperty, ownKeys.
  • set tuzog’i true qaytarishi shart.
  • Reflect standart amallarni funksiya ko’rinishida beradi.
  • Tuzoq ichida Reflect ishlatish to’g’ri xatti-harakatni saqlaydi.
  • Proxy sekinroq va maxfiy # xossalar bilan ishlamaydi.

Keyingi darsda modul tizimi va bundler — kodni yig’ish va tarqatish.

Bu dars foydali bo'ldimi?

marta ko'rildi