Proxy(代办器/拦截器)Reflect反射
Reflect和Proxy一样 都是es6用来操纵对象的 API
Proxy 代办操纵
Proxy代办器
var proxy = new Proxy({}, {
get: function(target, property) {
return 35;
}
});
let obj = Object.create(proxy);
obj.time // 35
console.log(obj.time)
Proxy()一样具有get、set要领
let obj={
name:"小花",
age:18,
sex:"男"
}
var proxObj=new Proxy(obj,{
set:function(target,key,value){
if(value=="小花"){
target[key]=value;
}
},
get:function(target,key){
if(target[key]==undefined){
return "没有该属性"
}else{
return target[key];
}
}
})
proxObj.name="李小花";
console.log(proxObj.name)
Reflect(反射)
//Reflect和Proxy一样 都是es6用来操纵对象的 API
let obj={
name:"小花",
age:18,
sex:"女"
}
//Reflect.defineProperty(obj,"school",{value:"师徒教诲"});
Reflect.deleteProperty(obj,"age");
console.log(Reflect.has(obj,"sex"));
console.log(obj);
var proxObj=new Proxy(obj,{
set:function(target,key,value){
if(value=="小花"){
Reflect.set(target,key,value);
}
},
get:function(target,key){
if(target[key]==undefined){
return "没有该属性"
}else{
return Reflect.get(target,key);
}
}
})
proxObj.name="李小花";
console.log(proxObj.name)
重要就是在实行函数之前Reflect代办一下完事在实行!