tgoop.com/brogrammist/49
Create:
Last Update:
Last Update:
Proxy obyektini bilarmidingiz?Proxy(object, handl
er) bizga obyektlar uchun proksi obyekt yaratish imkonini beradi. Bu bilan biz obyetklardagi fundamental operatsiyalarni "intercept/override" qilishimiz mumkin. Ya'ni ularni o'zimizga kerakli ravishda ishlaydigan qila olamiz.
Masalan, eng sodda misol, obyektda biz bergan maydon bo'lmasa "undefined" o'rniga defolt qiymat qaytarish:
"
const dict = {
defolt: "default",
maydon: "field",
};
const proxy = new Proxy(dict, {
get(target, key, receiver) {
// agar `key` mavjud bo'lsa,
// mos qiymat qaytaramiz
if (target[key])
return target[key];
// agar `key` yo'q bo'sa,
// `key`ning o'zini
return key;
},
});
console.log(proxy.maydon);
// "field"
console.log(proxy.nimadir);
// "nimadir
Yoki setterga validatsiya qo'shishimiz mumkin:
const proxy = new Proxy(dict, {
set(target, key, val) {
if (typeof val !== "string")
throw new TypeError("Faqat string qiymatlar olinadi!");
target[key] = val;
return true;
},
});
Aytgancha, proksi obyekt birinchi obyektimizni to'liq "overwrite" qilishi kerak. Chunki ularning ikkovi ham kodimizda bo'lishi chalkash holatlarni yuzaga keltiradi. Shuning uchun har doim bunday qiling:
let obj = {...};
obj = new Proxy(obj, handler);
BY Brogrammist
Share with your friend now:
tgoop.com/brogrammist/49