JavaScript starpnieki

Šajā apmācībā jūs uzzināsit par JavaScript starpniekserveriem, izmantojot piemērus.

Java valodā starpniekserveri (starpniekservera objekts) tiek izmantoti, lai ietītu objektu un no jauna definētu objektā dažādas darbības, piemēram, lasīšanu, ievietošanu, pārbaudi utt. Starpniekserveris ļauj objektam vai funkcijai pievienot pielāgotu rīcību.

Starpniekservera objekta izveide

Starpniekservera sintakse ir šāda:

 new Proxy(target, handler);

Šeit,

  • new Proxy() - konstruktors.
  • target - objekts / funkcija, kuru vēlaties atstāt
  • handler - var no jauna definēt objekta pielāgoto uzvedību

Piemēram,

 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

Šeit get()metodi izmanto, lai piekļūtu objekta rekvizīta vērtībai. Un, ja īpašums objektā nav pieejams, tas atgriež īpašumu nepastāv.

Kā redzat, objekta jaunu darbību izveidošanai varat izmantot starpniekserveri. Var rasties gadījums, kad vēlaties pārbaudīt, vai objektam ir noteikta atslēga, un veikt darbību, pamatojoties uz šo atslēgu. Šādos gadījumos var izmantot pilnvaras.

Jūs varat arī pabraukt garām tukšam apstrādātājam. Kad tiek izlaists tukšs apdarinātājs, starpniekserveris rīkojas kā oriģināls objekts. Piemēram,

 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

Starpniekserveri

Starpniekserveris nodrošina divas apstrādātāja metodes get()un set().

get () apdarinātājs

get()Metode tiek izmantota, lai piekļūtu īpašības mērķa objektu. Piemēram,

 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

Šeit get()metode ņem objektu un rekvizītu kā parametrus.

set () apdarinātājs

set()Metode tiek izmantota, lai iestatītu vērtību objektu. Piemēram,

 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)

Šeit agestudenta objektam tiek pievienots jauns īpašums .

Starpniekservera izmantošana

1. Apstiprināšanai

Apstiprināšanai varat izmantot starpniekserveri. Jūs varat pārbaudīt atslēgas vērtību un veikt darbību, pamatojoties uz šo vērtību.

Piemēram,

 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

Šeit ir pieejams tikai studenta objekta nosaukuma rekvizīts. Citādi tas atgriežas Nav atļauts.

2. Tikai lasāms objekta skats

Var būt gadījumi, kad nevēlaties ļaut citiem veikt izmaiņas objektā. Šādos gadījumos varat izmantot starpniekserveri, lai objektu padarītu tikai lasāmu. Piemēram,

 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

Iepriekš minētajā programmā objektu nekādā gadījumā nevar mutēt.

Ja kāds mēģina jebkādā veidā pārveidot objektu, jūs saņemsit tikai virkni ar tekstu Tikai lasāms.

3. Blakusparādības

Ja kāds nosacījums ir izpildīts, varat izmantot starpniekserveri, lai izsauktu citu funkciju. Piemēram,

 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 starpniekserveris tika ieviests no JavaScript ES6 versijas . Dažas pārlūkprogrammas var pilnībā neatbalstīt tā lietošanu. Lai uzzinātu vairāk, apmeklējiet JavaScript starpniekserveri.

Interesanti raksti...