ES6 - handler.apply ()

L'esempio seguente definisce una funzione rectangleArea, che prende larghezza e altezza come parametri e restituisce l'area del rettangolo. Il programma crea un proxy e definisce un oggetto gestore per la funzione rectangleArea. Questohandler objectverifica il numero di parametri passati alla funzione prima che la funzione venga eseguita. L'oggetto gestore genera un errore se due parametri non vengono passati alla funzione.

<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>

L'output del codice sopra sarà come indicato di seguito -

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