下面的例子定义了一个函数rectangleArea,它以宽度和高度为参数并返回矩形的面积。该程序创建一个代理并为矩形区域函数定义一个处理程序对象。这个handler object在函数执行之前验证传递给函数的参数数量。如果没有将两个参数传递给函数,处理程序对象将引发错误。
<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
相关用法
- ES6 handler.set()用法及代码示例
- ES6 handler.get()用法及代码示例
- ES6 handler.construct()用法及代码示例
- ES6 handler.has()用法及代码示例
- ES6 RegExp split()用法及代码示例
- ES6 Array every()用法及代码示例
- ES6 Array reduceRight()用法及代码示例
- ES6 Reflect.set()用法及代码示例
注:本文由纯净天空筛选整理自 ES6 - handler.apply()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。