ES6 - handler.set ()

L'exemple suivant définit une classe Student avec un constructeur et une méthode getter personnalisée, fullName. Le constructeur prend firstName et lastName comme paramètres. Le programme crée un proxy et définit un objet gestionnaire qui intercepte toutes les opérations définies sur firstName et lastName. L'objet gestionnaire renvoie une erreur si la longueur de la valeur de la propriété n'est pas supérieure à 2.

<script>
   class Student{
      constructor(firstName,lastName){
         this.firstName = firstName
         this.lastName = lastName
      }
      get fullName(){
         return `${this.firstName} : ${this.lastName}`
      }
   }
   const handler = {
      set: function(target,property,value){
         if(value.length>2){
            return Reflect.set(target,property,value);
         } else { 
	        throw 'string length should be greater than 2'
         }
      }
   }
   
   const s1 = new Student("Tutorials","Point")
   const proxy = new Proxy(s1,handler)
   console.log(proxy.fullName)
   proxy.firstName="Test"
   console.log(proxy.fullName)
   proxy.lastName="P"
</script>

La sortie du code ci-dessus sera comme indiqué ci-dessous -

Tutorials : Point
Test : Point
Uncaught string length should be greater than 2