JavaScript starpniekservera objekts ļauj pārtvert un pielāgot cita objekta darbību, nemainot oriģinālu.
Izmantojot starpniekservera objektus, varat pārbaudīt datus, nodrošināt papildu funkcionalitāti un kontrolēt piekļuvi rekvizītiem un funkcijām.
Uzziniet visu par starpniekservera objektu izmantošanu un to, kā tos izveidot JavaScript.
Starpniekservera objekta izveide
Programmā JavaScript varat izveidot starpniekservera objektus, izmantojot Starpniekserveriskonstruktors. Šis konstruktors izmanto divus argumentus: a mērķis iebilst, lai apliktu starpniekserveri un a apdarinātājs objekts, kura īpašības nosaka starpniekservera uzvedību, veicot darbības.
Tas izmanto šos argumentus un izveido objektu, ko varat izmantot mērķa objekta vietā. Šis izveidotais objekts var atkārtoti definēt galvenās darbības, piemēram, rekvizītu iegūšanu, iestatīšanu un definēšanu. Varat arī izmantot šos starpniekservera objektus, lai reģistrētu īpašuma piekļuves un validētu, formatētu vai sanitizētu ievades.
Piemēram:
konst originalObject = {
foo: "bārs"
}konst apdarinātājs = {
gūt: funkciju(mērķis, īpašums){
atgriezties mērķis [īpašums];
},
komplekts: funkciju(mērķis, īpašums, vērtība){
mērķis[īpašums] = vērtība;
}
};
konst starpniekserveris = jaunsStarpniekserveris(oriģinālais objekts, apstrādātājs)
Šis kods izveido mērķa objektu, oriģinālais objekts, ar vienu īpašumu, foo, un apstrādātāja objekts, apdarinātājs. Apdarinātāja objektā ir divas īpašības, gūt un komplekts. Šīs īpašības ir pazīstamas kā lamatas.
Starpniekservera objekta slazds ir funkcija, kas tiek izsaukta ikreiz, kad veicat noteiktu darbību starpniekservera objektā. Slazdi ļauj pārtvert un pielāgot starpniekservera objekta uzvedību. Piekļūstot rekvizītam no starpniekservera objekta, tiek izsaukts gūt slazds un starpniekservera objekta rekvizīta modificēšana vai manipulēšana izsauc the komplekts slazds.
Visbeidzot, kods izveido starpniekservera objektu ar Starpniekserveris konstruktors. Tas pāriet oriģinālais objekts un apdarinātājs kā mērķa objektu un apstrādātāju, attiecīgi.
Izmantojot starpniekservera objektus
Starpniekservera objektiem JavaScript ir vairāki lietojumi, daži no tiem ir šādi.
Funkcionalitātes pievienošana objektam
Varat izmantot starpniekservera objektu, lai aplauztu esošu objektu un pievienotu jaunas funkcijas, piemēram, reģistrēšanu vai kļūdu apstrāde, nemainot sākotnējo objektu.
Lai pievienotu jaunu funkcionalitāti, jums būs jāizmanto Starpniekserveris konstruktoru un definējiet vienu vai vairākus slazdus darbībām, kuras vēlaties pārtvert.
Piemēram:
konst userObject = {
vārds: "Kennedy",
uzvārds: "Mārtiņš",
vecums: 20,
};konst apdarinātājs = {
gūt: funkciju(mērķis, īpašums){
konsole.log("Īpašuma iegūšana"${property}"`);
atgriezties mērķis [īpašums];
},
komplekts: funkciju(mērķis, īpašums, vērtība){
konsole.log("Īpašuma iestatīšana"${property}" novērtēt "${value}"`);
mērķis[īpašums] = vērtība;
},
};konst starpniekserveris = jaunsStarpniekserveris(userObject, apdarinātājs);
konsole.log (proxy.firstName); // Īpašuma "firstName" iegūšana Kenedijs
konsole.log (proxy.lastName); // Īpašuma iegūšana "uzvārds" Mārtiņš
proxy.age = 23; // Īpašības iestatīšana "vecums" novērtēt "23"
Šis koda bloks papildina funkcionalitāti, izmantojot starpniekservera slazdus, gūt un komplekts. Tagad, kad mēģināt piekļūt vai modificēt rekvizītu userObject, starpniekservera objekts vispirms reģistrēs jūsu darbību konsolē, pirms piekļūs īpašumam vai mainīs to.
Datu apstiprināšana pirms to iestatīšanas objektam
Varat izmantot starpniekservera objektus, lai pārbaudītu datus un pārliecinātos, ka tie atbilst noteiktiem kritērijiem pirms to iestatīšanas objektam. To var izdarīt, definējot validācijas loģiku sadaļā a komplekts lamatas apdarinātājs objektu.
Piemēram:
konst userObject = {
vārds: "Kennedy",
uzvārds: "Mārtiņš",
vecums: 20,
};konst apdarinātājs = {
gūt: funkciju(mērķis, īpašums){
konsole.log("Īpašuma iegūšana"${property}"`);
atgriezties mērķis [īpašums];
},
komplekts: funkciju(mērķis, īpašums, vērtība){
ja (
īpašums "vecums" &&
veids vērtība == "numurs" &&
vērtība > 0 &&
vērtība < 120
) {
konsole.log("Īpašuma iestatīšana"${property}" novērtēt "${value}"`);
mērķis[īpašums] = vērtība;
} cits {
mestjaunsKļūda("Nederīgs parametrs. Lūdzu, pārskatiet un izlabojiet.");
}
},
};
konst starpniekserveris = jaunsStarpniekserveris(userObject, apdarinātājs);
proxy.age = 21;
Šis koda bloks pievieno validācijas noteikumus komplekts slazds. Varat piešķirt jebkuru vērtību vecums īpašums uz a userObject piemēram. Taču, izmantojot pievienotos validācijas noteikumus, vecuma rekvizītam var piešķirt jaunu vērtību tikai tad, ja tas ir skaitlis, kas ir lielāks par 0 un mazāks par 120. Jebkura vērtība, kuru mēģināt iestatīt vecums rekvizīts, kas neatbilst nepieciešamajiem kritērijiem, izraisīs kļūdu un izdrukās kļūdas ziņojumu.
Piekļuves kontrole objekta rekvizītiem
Varat izmantot starpniekservera objektus, lai paslēptu noteiktas objekta īpašības. Dariet to, definējot ierobežojumu loģiku gūt slazdi rekvizītiem, kuriem vēlaties kontrolēt piekļuvi.
Piemēram:
konst userObject = {
vārds: "Kennedy",
uzvārds: "Mārtiņš",
vecums: 20,
tālrunis: 1234567890,
e-pasts: "[email protected]",
};konst apdarinātājs = {
gūt: funkciju(mērķis, īpašums){
ja (īpašums "tālrunis" || īpašums "e-pasts") {
mestjaunsKļūda("Piekļuve informācijai liegta");
} cits {
konsole.log("Īpašuma iegūšana"${property}"`);
atgriezties mērķis [īpašums];
}
},
komplekts: funkciju(mērķis, īpašums, vērtība){
konsole.log("Īpašuma iestatīšana"${property}" novērtēt "${value}"`);
mērķis[īpašums] = vērtība;
},
};konst starpniekserveris = jaunsStarpniekserveris(userObject, apdarinātājs);
konsole.log (proxy.firstName); // Īpašuma "firstName" iegūšana Kenedijs
konsole.log (proxy.email); // Izmet kļūdu
Iepriekš minētais koda bloks pievieno noteiktus ierobežojumus gūt slazds. Sākotnēji varat piekļūt visiem pieejamajiem īpašumiem userObject. Pievienotie noteikumi neļauj piekļūt sensitīvai informācijai, piemēram, lietotāja e-pastam vai tālrunim. Mēģinot piekļūt kādam no šiem īpašumiem, tiks parādīta kļūda.
Citi starpniekservera slazdi
The gūt un komplekts slazdi ir visizplatītākie un noderīgākie, taču ir arī 11 citi JavaScript starpniekservera slazdi. Viņi ir:
- pieteikties: pieteikties trap darbojas, kad izsaucat funkciju starpniekservera objektā.
- konstruēt: konstruēt trap darbojas, kad izmantojat jauno operatoru, lai izveidotu objektu no starpniekservera objekta.
- dzēst īpašumu: dzēst īpašumu slazds darbojas, kad izmantojat dzēst operatoru, lai noņemtu rekvizītu no starpniekservera objekta.
- ir - ir slazds darbojas, kad izmantojat iekšā operatoru, lai pārbaudītu, vai starpniekservera objektā pastāv rekvizīts.
- ownKeys - ownKeys slazds darbojas, kad zvanāt vai nu Object.getOwnPropertyNames vai Object.getOwnPropertySymbols funkciju starpniekservera objektā.
- getOwnPropertyDescriptor - getOwnPropertyDescriptor slazds darbojas, kad zvanāt Object.getOwnPropertyDescriptor funkciju starpniekservera objektā.
- defineProperty - defineProperty slazds darbojas, kad zvanāt Object.defineProperty funkciju starpniekservera objektā.
- novērst paplašinājumus - novērst paplašinājumus slazds darbojas, kad zvanāt Object.preventExtensions funkciju starpniekservera objektā.
- ir Paplašināms - ir Paplašināms slazds darbojas, kad zvanāt Object.isExtensible funkciju starpniekservera objektā.
- getPrototypeOf - getPrototypeOf slazds darbojas, kad zvanāt Object.getPrototypeOf funkciju starpniekservera objektā.
- setPrototypeOf - setPrototypeOf slazds darbojas, kad zvanāt Object.setPrototypeOf funkciju starpniekservera objektā.
Kā komplekts un gūt slazdus, varat izmantot šos slazdus, lai objektam pievienotu jaunus funkcionalitātes, validācijas un vadības slāņus, nemainot oriģinālu.
Starpniekservera objektu mīnusi
Starpniekservera objekti var būt spēcīgs instruments, lai objektam pievienotu pielāgotu funkcionalitāti vai validāciju. Bet tiem ir arī daži iespējamie trūkumi. Viens no šādiem trūkumiem ir atkļūdošanas grūtības, jo var būt grūti redzēt, kas notiek aizkulisēs.
Starpniekservera objektus var būt arī grūti izmantot, it īpaši, ja jūs tos nezināt. Pirms starpniekservera objektu izmantošanas kodā rūpīgi jāapsver šie trūkumi.