ES6 - handler.apply ()

L'exemple suivant définit une fonction rectangleArea, qui prend la largeur et la hauteur comme paramètres et renvoie la zone du rectangle. Le programme crée un proxy et définit un objet gestionnaire pour la fonction rectangleArea. Cehandler objectvérifie le nombre de paramètres passés à la fonction avant que la fonction ne soit exécutée. L'objet gestionnaire renvoie une erreur si deux paramètres ne sont pas passés à la fonction.

<script>
   function rectangleArea(width,height){
      return width*height;
   }
   const handler = {
      apply:function(target,thisArgs,argsList){
      console.log(argsList);
      //console.log(target)
      if(argsList.length == 2){
         return Reflect.apply(target,thisArgs,argsList)
      }
         else throw 'Invalid no of arguments to calculate'
      }
   }

   const proxy = new Proxy(rectangleArea,handler)
   const result = proxy(10,20);
   console.log('area is ',result)
   proxy(10) // Error
</script>

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

[10, 20]
area is 200
[10]
Uncaught Invalid no of arguments to calculate