ES6 - handler.apply()
以下示例定义了一个函数 rectangleArea,该函数以 width 和 height 作为参数并返回矩形的面积。该程序为 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