Warning: file_put_contents(aCache/aDaily/post/brogrammist/--): Failed to open stream: No space left on device in /var/www/tgoop/post.php on line 50
Brogrammist@brogrammist P.49
BROGRAMMIST Telegram 49
Proxy obyektini bilarmidingiz?

Proxy(object, handler) 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);
👍13



tgoop.com/brogrammist/49
Create:
Last Update:

Proxy obyektini bilarmidingiz?

Proxy(object, handler) 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

View MORE
Open in Telegram


Telegram News

Date: |

As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. best-secure-messaging-apps-shutterstock-1892950018.jpg Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators.
from us


Telegram Brogrammist
FROM American