JavaScript Metadasturlash (Meta-programming)
Metadasturlash — bu dasturning o'zini o'zi tahlil qilish, o'zgartirish yoki uning xatti-harakatini boshqa dasturiy ta'minot orqali boshqarish qobiliyatidir. Sodda qilib aytganda, bu "kod yozuvchi kod" yoki "kodni boshqaruvchi kod" demakdir.
Metadasturlash nima?
An'anaviy dasturlashda biz ma'lumotlar ustida amallar bajaramiz (masalan, sonlarni qo'shamiz). Metadasturlashda esa biz dasturning o'zi ustida amallar bajaramiz (masalan, obyektning xususiyatini o'qish jarayonini o'zgartiramiz).
JavaScript-da Metadasturlash
JavaScript-da metadasturlash uchta asosiy tushunchaga tayanadi:
- Introspection (O'zini tekshirish): Dastur o'zining tuzilishini ko'ra oladi. Masalan,
Object.keys()yordamida obyektning barcha xususiyatlarini bilib olish. - Self-Modification (O'zini o'zgartirish): Dastur o'zining tuzilishini o'zgartira oladi. Masalan, obyektga yangi metodlarni dinamik ravishda qo'shish.
- Intercession (Aralashuv): Dasturning standart xatti-harakatlarini (masalan, obyektning xususiyatini o'qish yoki yozish) "tutib olish" va o'zgartirish.
Asosiy vositalar
Zamonaviy JavaScript (ES6+) metadasturlash uchun ikkita kuchli vositani taqdim etadi:
1. Proxy API
Proxy (Ishonchli vakil) — bu boshqa obyektni "o'rab oluvchi" va unga bo'ladigan barcha murojaatlarni (o'qish, yozish, o'chirish) nazorat qiluvchi obyekt.
2. Reflect API
Reflect — bu obyektlar bilan past darajali (low-level) amallarni bajarish uchun mo'ljallangan global obyekt. U barcha ichki amallarni (masalan, delete, in) funksiya ko'rinishida taqdim etadi.
Nima uchun foydalaniladi?
- Ma'lumotlarni tekshirish (Validation): Obyektga noto'g'ri qiymat yozishni taqiqlash.
- Logging va Debugging: Kodning qayerida obyekt o'zgarayotganini kuzatish.
- Virtual obyektlar: Haqiqatda mavjud bo'lmagan, lekin so'ralganda "yasab beriladigan" ma'lumotlar.
- Reaktivlik: Masalan, Vue.js kabi freymvorklarda ma'lumot o'zgarganda UI-ni avtomatik yangilash.
Keyingi qadamlar
Metadasturlashni amalda qo'llashni o'rganish uchun quyidagi darslarga o'ting:
