ЈаваСцрипт проксији

У овом упутству ћете научити о ЈаваСцрипт прокси посредством примера.

У ЈаваСцрипт-у се проксији (проки објекат) користе за умотавање објекта и редефинисање различитих операција у објекат као што су читање, уметање, валидација итд. Проки вам омогућава да додате прилагођено понашање објекту или функцији.

Креирање проки објекта

Синтакса проксија је:

 new Proxy(target, handler);

Ево,

  • new Proxy() - конструктор.
  • target - објекат / функцију коју желите прокси
  • handler - може редефинисати прилагођено понашање објекта

На пример,

 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

Овде се get()метода користи за приступ вредности својства објекта. А ако својство није доступно у објекту, враћа својство да не постоји.

Као што видите, можете користити прокси за креирање нових операција за објекат. Случај се може појавити када желите да проверите да ли објекат има одређени кључ и извршите радњу на основу тог кључа. У таквим случајевима могу се користити пуномоћници.

Такође можете проследити празан руковатељ. Када се проследи празан руковатељ, проки се понаша као оригинални објекат. На пример,

 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

Проки хандлерс

Проки пружа две методе руковања get()и set().

гет () руковатељ

get()Метод се користи за приступ својства циљног објекта. На пример,

 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

Овде get()метода узима објект и својство као своје параметре.

сет () руковалац

set()Метод се користи за постављање вредности објекта. На пример,

 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)

Овде се ново својство ageдодаје ученичком објекту.

Употреба проксија

1. За валидацију

За валидацију можете користити прокси. Можете проверити вредност кључа и извршити радњу на основу те вредности.

На пример,

 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

Овде је доступно само својство имена студентског објекта. Иначе, враћа се Није дозвољено.

2. Поглед објекта само за читање

Могу бити тренуци када не желите да дозволите другима да врше промене на објекту. У таквим случајевима можете користити прокси да бисте објект учинили само читљивим. На пример,

 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

У горе наведеном програму не може се на било који начин мутирати објекат.

Ако неко покуша да мутира објекат на било који начин, добићете само низ који каже само за читање.

3. Нежељени ефекти

Прокси можете користити за позивање друге функције када је услов испуњен. На пример,

 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

ЈаваСцрипт проки је представљен од верзије ЈаваСцрипт ЕС6 . Неки прегледачи можда неће у потпуности подржати његову употребу. Да бисте сазнали више, посетите ЈаваСцрипт прокси.

Занимљиви Чланци...