- 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 - 运算
- 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.construct()
下面的例子定义了一个有构造方法和 getter 方法的类 Student。构造方法接受 firstName 和 lastName 作为参数。此程序创建一个代理并定义一个处理程序对象以拦截构造方法。处理程序对象验证传递给构造方法的参数数量。如果未传递恰好两个参数给构造方法,处理程序对象则会引发错误。
<script> class Student{ constructor(firstName,lastName){ this.firstName = firstName this.lastName = lastName } get fullName(){ return `${this.firstName} : ${this.lastName}` } } const handler = { construct:function(target,args){ if(args.length==2) { return Reflect.construct(target,args); } else throw 'Please enter First name and Last name' } } const StudentProxy = new Proxy(Student,handler) const s1 = new StudentProxy('kannan','sudhakaran') console.log(s1.fullName) const s2 = new StudentProxy('Tutorials') console.log(s2.fullName) </script>
上文代码的输出如下 −
kannan : sudhakaran Uncaught Please enter First name and Last name
广告