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 age
sa 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.