Es6-handler-apply
提供:Dev Guides
ES6-handler.apply()
次の例では、幅と高さをパラメーターとして取り、長方形の面積を返す関数 rectangleArea を定義しています。 プログラムはプロキシを作成し、rectangleArea関数のハンドラーオブジェクトを定義します。 この*ハンドラーオブジェクト*は、関数が実行される前に関数に渡されるパラメーターの数を確認します。 2つのパラメーターが関数に渡されない場合、ハンドラーオブジェクトはエラーをスローします。
<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