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

