Server proxy proxy

V tomto tutoriáli sa pomocou príkladov dozviete o proxy serveroch JavaScriptu.

V JavaScripte sa proxy servery (proxy objekt) používajú na zabalenie objektu a predefinovanie rôznych operácií s objektom, ako je čítanie, vkladanie, overovanie atď. Proxy umožňuje pridať vlastné správanie k objektu alebo funkcii.

Vytvorenie Proxy objektu

Syntax servera proxy je:

 new Proxy(target, handler);

Tu,

  • new Proxy() - konštruktér.
  • target - objekt / funkcia, ktorú chcete zastupovať
  • handler - môže predefinovať vlastné správanie objektu

Napríklad,

 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

Tu sa get()metóda používa na prístup k hodnote vlastnosti objektu. A ak vlastnosť nie je v objekte k dispozícii, vráti vlastnosť neexistuje.

Ako vidíte, na vytvorenie nových operácií s objektom môžete použiť proxy. Môže sa vyskytnúť prípad, keď chcete skontrolovať, či má objekt konkrétny kľúč, a vykonať akciu na základe tohto kľúča. V takýchto prípadoch je možné použiť proxy.

Môžete tiež odovzdať prázdny handler. Keď sa odovzdá prázdny obslužný program, server proxy sa chová ako pôvodný objekt. Napríklad,

 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

Obsluhovatelia proxy

Proxy poskytuje dve metódy obsluhy get()a set().

get () obslužný program

get()Metóda sa používa pre prístup k vlastnosti cieľového objektu. Napríklad,

 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

Tu get()metóda berie objekt a vlastnosť ako svoje parametre.

obslužný program set ()

set()Metóda sa používa na nastavenie hodnoty objektu. Napríklad,

 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)

Tu agesa do študentského objektu pridá nová vlastnosť .

Použitie servera proxy

1. Na overenie

Na overenie môžete použiť proxy. Na základe tejto hodnoty môžete skontrolovať hodnotu kľúča a vykonať akciu.

Napríklad,

 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

Tu je prístupná iba vlastnosť názvu študentského objektu. V opačnom prípade sa vráti Nie je povolené.

2. Pohľad na objekt iba na čítanie

Môžu nastať chvíle, keď nechcete, aby ostatní nechali zmeny v objekte. V takýchto prípadoch môžete použiť proxy, aby bol objekt iba čitateľný. Napríklad,

 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

Vo vyššie uvedenom programe nemožno objekt nijako mutovať.

Ak sa niekto pokúsi mutovať objekt akýmkoľvek spôsobom, dostanete iba reťazec s textom Iba na čítanie.

3. Vedľajšie účinky

Po splnení podmienky môžete použiť proxy na volanie inej funkcie. Napríklad,

 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 proxy bol zavedený z verzie JavaScript ES6 . Niektoré prehliadače nemusia jeho používanie plne podporovať. Ak sa chcete dozvedieť viac, navštívte proxy server JavaScript.

Zaujímavé články...