{
function validation(target,validationExt){
return new Proxy(target,{
_validationExt:validationExt,
set(target,key,value){
// 验证是否存在key
if(target.hasOwnProperty(key)){
let va = this._validationExt[key];// 验证value是否符合规则
if (!!va(value)) {
// 设置被代理对象属性
return Reflect.set(target,key,value);
}else{
throw Error(`不能设置${key}到${value}`);
}
}else{
throw Error(`${key}不存在`);
}
},
});
}
// 验证规则
const validationExt = {
name(val){
return typeof val==='string'
},
age(val){
return typeof val === 'number' && val>18
},
}
class Person{
constructor(name,age){
this.name = name;
this.age = age;
return validation(this,validationExt);
}
}
let person1 = new Person('wuding',30);
console.log(person1);
// 下面赋值报错
// person1.name = 123;
// person1.age = 17;
// 下面赋值正常
person1.name = 'Han';
person1.age = 19;
console.log(person1);
}
es6 Proxy、Reflect的简易应用
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 写在前面:这篇文章讲述了如何利用Proxy和Reflect实现双向数据绑定,个人系Vue早期玩家,写这个小框架的时...
- Author: Zongwei Zhou | 周纵苇Weibo: @MrGiovanniEmail: zongwe...
- 原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜欢的可以关注...