es6 Proxy

来源:互联网 发布:淘宝客服接待人特别少 编辑:程序博客网 时间:2024/05/21 14:43
let user={
name:"hkj",
age:'20'
}
let pro= new Proxy(user,{
get(target,key){//拦截获取属性操作
return target[key].replace("hkj","aaaa");
},
set(target,key,value){//拦截设置属性操作
if(key=='name'){
return target[key]=value;
}else{
return target;
}
},
has(target,key){//拦截key in Object操作
if(key=='name'){
return true;
}else{
return false;
}
},
deleteProperty(target,key){//拦截删除操作
if(key.indexOf('n')==0){
delete target[key];
return true;
}else{
return target;
}
},
//拦截Object的ownKeys函数
ownKeys(target){
return Object.keys(target).filter((item)=>item!='age');
}
});
console.log(pro.name);
pro.name="hukai";
console.log(pro.name);
console.log('name' in pro);
console.log('age' in pro);//age被判断
delete pro.name;
console.log(pro);
pro.name="hkj";
console.log(Object.keys(pro));//pro只有name属性,age已被拦截




//reflect
console.log(Reflect.get(user,'name'));
Reflect.set(user,'name','hukai');
console.log(Reflect.get(user,'name'));
console.log(Reflect.has(user,'name'));
原创粉丝点击