- ES6 教程
- ES6 - 首页
- ES6 - 总览
- ES6 - 环境
- ES6 - 语法
- ES6 - 变量
- ES6 - 运算符
- ES6 - 决策制定
- ES6 - 循环
- ES6 - 函数
- ES6 - 事件
- ES6 - Cookie
- ES6 - 页面重定向
- ES6 - 对话框
- ES6 - void 关键字
- ES6 - 页面打印
- ES6 - 对象
- ES6 - 数字
- ES6 - 布尔值
- ES6 - 字符串
- ES6 - Symbol
- ES6 - 新字符串方法
- ES6 - 数组
- ES6 - 日期
- ES6 - Math
- ES6 - RegExp
- ES6 - HTML DOM
- ES6 - 迭代器
- ES6 - 集合
- ES6 - 类
- ES6 - Map 和 Set
- ES6 - Promise
- ES6 - 模块
- ES6 - 错误处理
- ES6 - 对象扩展
- ES6 - Reflect API
- ES6 - Proxy API
- ES6 - 验证
- ES6 - 动画
- ES6 - 多媒体
- ES6 - 调试
- ES6 - 图像地图
- ES6 - 浏览器
- ES7 - 新特性
- ES8 - 新特性
- ES9 - 新特性
- ES6 有用资源
- ES6 - 快速指南
- ES6 - 有用资源
- ES6 - 讨论
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
广告