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'));
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'));