Διακομιστές μεσολάβησης JavaScript

Σε αυτό το σεμινάριο, θα μάθετε για διακομιστές μεσολάβησης JavaScript με τη βοήθεια παραδειγμάτων.

Στο JavaScript, οι διακομιστές μεσολάβησης (αντικείμενο διακομιστή μεσολάβησης) χρησιμοποιούνται για να τυλίξουν ένα αντικείμενο και να επαναπροσδιορίσουν διάφορες λειτουργίες στο αντικείμενο, όπως ανάγνωση, εισαγωγή, επικύρωση κ.λπ. Ο διακομιστής μεσολάβησης σάς επιτρέπει να προσθέσετε προσαρμοσμένη συμπεριφορά σε ένα αντικείμενο ή μια συνάρτηση.

Δημιουργία αντικειμένου μεσολάβησης

Η σύνταξη του διακομιστή μεσολάβησης είναι:

 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 () χειριστής

Η 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

Ο διακομιστής μεσολάβησης JavaScript εισήχθη από την έκδοση του JavaScript ES6 . Ορισμένα προγράμματα περιήγησης ενδέχεται να μην υποστηρίζουν πλήρως τη χρήση του. Για να μάθετε περισσότερα, επισκεφθείτε τον διακομιστή μεσολάβησης JavaScript.

ενδιαφέροντα άρθρα...