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代理一下完事在执行!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。