Šioje pamokoje su pavyzdžių pagalba sužinosite apie „JavaScript“ tarpinius serverius.
„JavaScript“ sistemoje tarpiniai serveriai (tarpinis objektas) naudojami objektui apvynioti ir iš naujo apibrėžti įvairias operacijas, tokias kaip skaitymas, įterpimas, patvirtinimas ir kt. Tarpinis serveris leidžia jums pridėti pasirinktinį elgesį prie objekto ar funkcijos.
Tarpinio objekto sukūrimas
Įgaliotojo sintaksė yra:
new Proxy(target, handler);
Čia
new Proxy()
- konstruktorius.target
- objektas / funkcija, kurią norite proxyhandler
- gali iš naujo apibrėžti įprastą objekto elgesį
Pavyzdžiui,
let student1 = ( age: 24, name: "Felix" ) const handler = ( get: function(obj, prop) ( return obj(prop) ? obj(prop) : 'property does not exist'; ) ) const proxy = new Proxy(student1, handler); console.log(proxy.name); // Felix console.log(proxy.age); // 24 console.log(proxy.class); // property does not exist
Čia get()
metodas naudojamas norint pasiekti objekto nuosavybės vertę. Ir jei nuosavybės objekte nėra, ji grąžina nuosavybės, kurios nėra.
Kaip matote, galite naudoti tarpinį serverį kurdami naujas objekto operacijas. Gali kilti atvejis, kai norite patikrinti, ar objektas turi tam tikrą raktą, ir atlikti veiksmą, pagrįstą tuo raktu. Tokiais atvejais gali būti naudojami įgaliojimai.
Taip pat galite praleisti tuščią prižiūrėtoją. Kai perduodamas tuščias tvarkytojas, tarpinis serveris elgiasi kaip originalus objektas. Pavyzdžiui,
let student = ( name: 'Jack', age: 24 ) const handler = ( ); // passing empty handler const proxy1 = new Proxy(student, ()); console.log(proxy1); // Proxy (name: "Jack", age: 24) console.log(proxy1.name); // Jack
Įgaliotieji tvarkytojai
„Proxy“ pateikia du tvarkytojo metodus get()
ir set()
.
gauti () tvarkytuvą
get()
Metodas yra naudojamas prieigai prie taikinio objekto savybes. Pavyzdžiui,
let student = ( name: 'Jack', age: 24 ) const handler = ( // get the object key and value get(obj, prop) ( return obj(prop); ) ) const proxy = new Proxy(student, handler); console.log(proxy.name); // Jack
Čia get()
metodas parenka objektą ir ypatybę.
rinkinys () tvarkytuvas
set()
Metodas yra naudojamas, norint nustatyti reikšmę objekto. Pavyzdžiui,
let student = ( name: 'John' ) let setNewValue = ( set: function(obj, prop, value) ( obj(prop) = value; return; ) ); // setting new proxy let person = new Proxy(student, setNewValue); // setting new key/value person.age = 25; console.log(person); // Proxy (name: "John", age: 25)
Čia age
prie studento objekto pridedama nauja nuosavybė .
„Proxy“ naudojimas
1. Patvirtinimui
Patvirtinimui galite naudoti tarpinį serverį. Galite patikrinti rakto vertę ir atlikti veiksmą pagal šią vertę.
Pavyzdžiui,
let student = ( name: 'Jack', age: 24 ) const handler = ( // get the object key and value get(obj, prop) ( // check condition if (prop == 'name') ( return obj(prop); ) else ( return 'Not allowed'; ) ) ) const proxy = new Proxy(student, handler); console.log(proxy.name); // Jack console.log(proxy.age); // Not allowed
Čia prieinama tik studento objekto vardo ypatybė. Kita vertus, ji grįžta Neleidžiama.
2. Tik skaitymo objekto vaizdas
Kartais gali būti, kad nenorite leisti kitiems atlikti objekto pakeitimų. Tokiais atvejais galite naudoti tarpinį serverį, kad objektas būtų skaitomas. Pavyzdžiui,
let student = ( name: 'Jack', age: 23 ) const handler = ( set: function (obj, prop, value) ( if (obj(prop)) ( // cannot change the student value console.log('Read only') ) ) ); const proxy = new Proxy(student, handler); proxy.name = 'John'; // Read only proxy.age = 33; // Read only
Aukščiau pateiktoje programoje negalima jokiu būdu mutuoti objekto.
Jei bandysite bet kokiu būdu mutuoti objektą, gausite tik eilutę, kurioje sakoma tik skaityti.
3. Šalutinis poveikis
Galite naudoti tarpinį serverį kitai funkcijai iškviesti, kai įvykdoma sąlyga. Pavyzdžiui,
const myFunction = () => ( console.log("execute this function") ); const handler = ( set: function (target, prop, value) ( if (prop === 'name' && value === 'Jack') ( // calling another function myFunction(); ) else ( console.log('Can only access name property'); ) ) ); const proxy = new Proxy((), handler); proxy.name = 'Jack'; // execute this function proxy.age = 33; // Can only access name property
„JavaScript“ tarpinis serveris buvo pristatytas iš „ JavaScript ES6“ versijos . Kai kurios naršyklės gali nevisiškai palaikyti jo naudojimą. Norėdami sužinoti daugiau, apsilankykite „JavaScript“ tarpiniame serveryje.