ES6 - handler.apply()



以下示例定義了一個函式 rectangleArea,它將寬度和高度作為引數並返回矩形的面積。 該程式建立一個代理併為 rectangleArea 函式定義一個處理器物件。 此 處理器物件 在執行函式前驗證傳遞給該函式的引數數量。 如果未向函式傳遞兩個引數,處理器物件將引發一個錯誤。

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

上述程式碼的輸出如下 -

[10, 20]
area is 200
[10]
Uncaught Invalid no of arguments to calculate
廣告
© . All rights reserved.