Š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āthandler
- 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 age
studenta 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.