Proxy代理,Reflect反射

Proxy对属性的读取

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
{ //供应商,原始对象 

let obj={

 time:'2017-1-1', 

name:'net', 

_r:123 } 

//代理商,新生成一个Proxy对象,将要代理的对象放进去,后面是实现代理的方法 

let monitor=new Proxy(obj,{ 

//拦截对象属性的读取 

get(target,key){ 

return target[key].replace('2017','2016')//将读取到的2017全部替换成2018 

} })
//拦截对象设置属性,target是前面的object对象,key是要修改属性,value是值 
set(target,key,value){
 if(key=='name') {
 return target[key]=value;//新的value值赋给找的的属性key,再赋给Object对象
 }else{ 
return target[key]; 
} } 

console.log('get',monitor.time) 

//从monitor中读取time

 //monitor.time 
  monitor.time='2018'; 
  monitor.name="xxxxx"; 
  console.log('set',monitor,obj);
}

es6——Proxy和Reflect 随笔 第1张

通过读和写操作就可以做很多事了

es6——Proxy和Reflect 随笔 第2张

es6——Proxy和Reflect 随笔 第3张

es6——Proxy和Reflect 随笔 第4张

 

这样的操作甚至可以起到欺骗作用

es6——Proxy和Reflect 随笔 第5张

es6——Proxy和Reflect 随笔 第6张

es6——Proxy和Reflect 随笔 第7张

这样是删除操作

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄