„JavaScript“ tarpiniai serveriai

Š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 proxy
  • handler - 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 ageprie 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.

Įdomios straipsniai...