Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

„JavaScript“ tarpinio serverio objektas leidžia perimti ir tinkinti kito objekto veikimą nekeičiant originalo.

Naudodami tarpinio serverio objektus galite patvirtinti duomenis, suteikti papildomų funkcijų ir valdyti prieigą prie ypatybių ir funkcijų.

Sužinokite viską apie tarpinio serverio objektų naudojimą ir kaip galite juos sukurti naudodami „JavaScript“.

Tarpinio serverio objekto kūrimas

„JavaScript“ galite sukurti tarpinio serverio objektus naudodami Proxykonstruktorius. Šis konstruktorius turi du argumentus: a taikinys objektą apvynioti tarpinį serverį ir a prižiūrėtojas objektas, kurio savybės apibrėžia tarpinio serverio elgesį, kai atliekate operacijas.

Ji paima šiuos argumentus ir sukuria objektą, kurį galite naudoti vietoje tikslinio objekto. Šis sukurtas objektas gali iš naujo apibrėžti pagrindines operacijas, tokias kaip ypatybių gavimas, nustatymas ir apibrėžimas. Taip pat galite naudoti šiuos tarpinio serverio objektus norėdami registruoti nuosavybės prieigą ir patvirtinti, formatuoti arba išvalyti įvestis.

instagram viewer

Pavyzdžiui:

konst originalObject = {
foo: "baras"
}

konst tvarkytojas = {
gauti: funkcija(tikslas, nuosavybė){
grąžinti tikslas [nuosavybė];
},
rinkinys: funkcija(tikslas, nuosavybė, vertė){
tikslas [nuosavybė] = vertė;
}
};

konst tarpinis serveris = naujasProxy(originalus objektas, tvarkytojas)

Šis kodas sukuria tikslinį objektą, originalusObjektas, su viena nuosavybe, fooir tvarkytojo objektas, prižiūrėtojas. Valdiklio objektas turi dvi savybes, gauti ir rinkinys. Šios savybės žinomos kaip spąstai.

Tarpinio serverio objekto gaudyklė yra funkcija, iškviečiama kiekvieną kartą, kai atliekate nurodytą veiksmą tarpinio serverio objektu. Spąstai leidžia perimti ir pritaikyti tarpinio serverio objekto elgesį. Prieiga prie nuosavybės iš tarpinio serverio objekto iškviečia gauti trap ir modifikuojant arba manipuliuojant ypatybe iš tarpinio serverio objekto iškviečiama rinkinys spąstai.

Galiausiai kodas sukuria tarpinio serverio objektą su Proxy konstruktorius. Tai praeina originalusObjektas ir prižiūrėtojas kaip tikslinis objektas ir tvarkytojas.

Tarpinių objektų naudojimas

Tarpinio serverio objektai „JavaScript“ naudojami keliais būdais, kai kurie iš jų yra tokie.

Objekto funkcionalumo pridėjimas

Galite naudoti įgaliotąjį objektą, kad apvyniotumėte esamą objektą ir pridėtumėte naujų funkcijų, tokių kaip registravimas arba klaidų tvarkymas, nekeičiant pradinio objekto.

Norėdami pridėti naujų funkcijų, turėsite naudoti Proxy konstruktorių ir apibrėžkite vieną ar daugiau spąstų veiksmams, kuriuos norite perimti.

Pavyzdžiui:

konst userObject = {
Pirmas vardas: "Kennedy",
pavardė: "Martinai",
amžius: 20,
};

konst tvarkytojas = {
gauti: funkcija(tikslas, nuosavybė){
konsolė.log(„Turto gavimas“${property}"`);
grąžinti tikslas [nuosavybė];
},
rinkinys: funkcija(tikslas, nuosavybė, vertė){
konsolė.log(„Nustatyti nuosavybę“${property}" vertinti "${value}"`);
tikslas [nuosavybė] = vertė;
},
};

konst tarpinis serveris = naujasProxy(userObject, tvarkytojas);

konsolė.log (proxy.firstName); // Turto „firstName“ Kennedy gavimas
konsolė.log (proxy.lastName); // Turto gavimas "pavardė" Martins
proxy.age = 23; // Ypatybės nustatymas "amžius" vertinti "23"

Šis kodo blokas prideda funkcionalumą per tarpinio serverio spąstus, gauti ir rinkinys. Dabar, kai bandote pasiekti arba pakeisti ypatybę userObject, tarpinis serveris pirmiausia užregistruos jūsų operaciją konsolėje, prieš pasiekdamas ar keisdamas nuosavybę.

Duomenų patvirtinimas prieš nustatant juos ant objekto

Galite naudoti tarpinius objektus duomenims patvirtinti ir įsitikinti, kad jie atitinka tam tikrus kriterijus prieš nustatydami juos objekte. Tai galite padaryti apibrėžę patvirtinimo logiką a rinkinys spąstai prižiūrėtojas objektas.

Pavyzdžiui:

konst userObject = {
Pirmas vardas: "Kennedy",
pavardė: "Martinai",
amžius: 20,
};

konst tvarkytojas = {
gauti: funkcija(tikslas, nuosavybė){
konsolė.log(„Turto gavimas“${property}"`);
grąžinti tikslas [nuosavybė];
},
rinkinys: funkcija(tikslas, nuosavybė, vertė){
jei (
nuosavybė "amžius" &&
tipas vertė == "skaičius" &&
reikšmė > 0 &&
vertė < 120
) {
konsolė.log(„Nustatyti nuosavybę“${property}" vertinti "${value}"`);
tikslas [nuosavybė] = vertė;
} Kitas {
mestinaujasKlaida("Neteisingas parametras. Peržiūrėkite ir pataisykite“.);
}
},
};

konst tarpinis serveris = naujasProxy(userObject, tvarkytojas);
proxy.age = 21;

Šis kodo blokas prideda patvirtinimo taisykles rinkinys spąstai. Galite priskirti bet kokią reikšmę amžiaus turtas ant a userObject instancija. Tačiau naudodami pridėtas patvirtinimo taisykles galite priskirti naują amžiaus nuosavybės vertę tik tuo atveju, jei tai skaičius, didesnis nei 0 ir mažesnis nei 120. Bet kokia vertė, kurią bandote nustatyti amžiaus ypatybė, kuri neatitinka reikalaujamų kriterijų, suaktyvins klaidą ir išspausdins klaidos pranešimą.

Prieigos prie objekto ypatybių valdymas

Norėdami paslėpti tam tikras objekto savybes, galite naudoti tarpinius objektus. Padarykite tai apibrėždami apribojimų logiką gauti ypatybių, prie kurių norite valdyti prieigą, spąstus.

Pavyzdžiui:

konst userObject = {
Pirmas vardas: "Kennedy",
pavardė: "Martinai",
amžius: 20,
telefonas: 1234567890,
paštas: "[email protected]",
};

konst tvarkytojas = {
gauti: funkcija(tikslas, nuosavybė){
jeigu (nuosavybė "telefonas" || nuosavybė "el. paštas") {
mestinaujasKlaida(„Prieiga prie informacijos uždrausta“);
} Kitas {
konsolė.log(„Turto gavimas“${property}"`);
grąžinti tikslas [nuosavybė];
}
},
rinkinys: funkcija(tikslas, nuosavybė, vertė){
konsolė.log(„Nustatyti nuosavybę“${property}" vertinti "${value}"`);
tikslas [nuosavybė] = vertė;
},
};

konst tarpinis serveris = naujasProxy(userObject, tvarkytojas);

konsolė.log (proxy.firstName); // Turto „firstName“ Kennedy gavimas
konsolė.log (proxy.email); // Metimo klaida

Aukščiau pateiktas kodo blokas prideda tam tikrų apribojimų gauti spąstai. Iš pradžių galite pasiekti visas galimas savybes userObject. Pridėtos taisyklės neleidžia pasiekti slaptos informacijos, pvz., vartotojo el. pašto ar telefono. Bandant pasiekti kurią nors iš šių ypatybių, bus suaktyvinta klaida.

Kiti tarpinio serverio spąstai

The gauti ir rinkinys spąstai yra labiausiai paplitę ir naudingi, tačiau yra 11 kitų „JavaScript“ tarpinio serverio spąstų. Jie yra:

  • taikyti: taikyti trap veikia, kai iškviečiate tarpinio serverio objekto funkciją.
  • statyti: statyti trap veikia, kai naudojate naują operatorių, kad sukurtumėte objektą iš tarpinio serverio objekto.
  • ištrinti nuosavybę: ištrinti nuosavybę spąstai veikia, kai naudojate Ištrinti operatorių, kad pašalintų ypatybę iš įgaliotojo objekto.
  • turi - turi spąstai veikia, kai naudojate in operatorių, kad patikrintų, ar tarpinio serverio objekte yra ypatybė.
  • ownKeys - ownKeys spąstai veikia, kai skambinate Object.getOwnPropertyNames arba Object.getOwnPropertySymbols funkcija tarpinio serverio objekte.
  • getOwnPropertyDescriptor - getOwnPropertyDescriptor spąstai veikia, kai skambinate Object.getOwnPropertyDescriptor funkcija tarpinio serverio objekte.
  • defineProperty - defineProperty spąstai veikia, kai skambinate Object.defineProperty funkcija tarpinio serverio objekte.
  • prevencijaPlėtiniai - prevencijaPlėtiniai spąstai veikia, kai skambinate Object.preventExtensions funkcija tarpinio serverio objekte.
  • yra Išplečiamas - yra Išplečiamas spąstai veikia, kai skambinate Object.isExtensible funkcija tarpinio serverio objekte.
  • gauti PrototypeOf - gauti PrototypeOf spąstai veikia, kai skambinate Object.getPrototypeOf funkcija tarpinio serverio objekte.
  • setPrototypeOf - setPrototypeOf spąstai veikia, kai skambinate Object.setPrototypeOf funkcija tarpinio serverio objekte.

Kaip rinkinys ir gauti spąstus, galite naudoti šiuos spąstus, kad pridėtumėte naujus funkcionalumo, patvirtinimo ir valdymo sluoksnius prie objekto nekeisdami originalo.

Tarpinių objektų trūkumai

Įgaliotieji serveriai gali būti galingas įrankis, leidžiantis pridėti pasirinktines funkcijas arba objekto patvirtinimą. Tačiau jie taip pat turi tam tikrų galimų trūkumų. Vienas iš tokių trūkumų yra sunkumas derinant, nes gali būti sunku suprasti, kas vyksta užkulisiuose.

Įgaliotuosius objektus taip pat gali būti sunku naudoti, ypač jei nesate su jais susipažinę. Prieš naudodami tarpinio serverio objektus savo kode, turėtumėte atidžiai apsvarstyti šiuos trūkumus.