脚本宝典收集整理的这篇文章主要介绍了Proxy(代理,拦截器),Reflect(反射),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
Proxy(代理,拦截器),Reflect(反射)
PRoxy:
代理:
VAR duixaing = {
"name":"小胖",
"age":25,
"sex":"男"
}
duixaing.name="老胖";
console.LOG(duixaing.name);//打印:老胖。
console.log(duixaing);//打印:Object {name: "老胖", age: 25, sex: "男"}。
var obj = {
"name":"小胖",
"age":25,
"sex":"男"
}
拦截:
var porxObj = new Proxy(obj,{
set:function(traget,key,value){
if(value == "老胖"){
traget[key]=value;
}
},
get:function(traget,key){
if(traget[key]==undefined){
return "我没有该属性";
}else{
return traget[key];
}
}
});
porxObj.name="老胖";
console.log(obj);//打印:Object {name: "老胖", age: 25, sex: "男"}。
console.log(porxObj.xh);//打印:我没有该属性。
console.log(porxObj.name);//打印:老胖。
//set:设置属性;
//get:获取属性;
注释:Proxy要传两个值,第一个值是要代理的对象,第二个值是要做哪些操作;
Reflect:
var obj = {
name:"老胖",
age:21,
sex:"男"
}
//Object.defineProPErty(obj,"school",{value:"师徒教育"});
定义属性:
Reflect.defineProperty(obj,"school",{value:"师徒教育"});
console.log(obj);
//让Object操作变为函数行为:
//delete obj.name;
Reflect.deleteProperty(obj,"name");
console.log(obj);
console.log(Reflect.has(obj,"age"));
//是否有没有这个属性,如果返回true,没有返回false;
Reflect对象的方法与Proxy对象的方法一一对应:
var porxObj = new Proxy(obj,{
set:function(traget,key,value){
if(value == "老胖"){
Reflect.set(traget,key,value);
}
},
get:function(traget,key){
if(traget[key]==undefined){
return "我没有该属性";
}else{
return Reflect.get(traget,key);
}
}
});
注释:Reflect一样都是es6提供的用来操作对象API(接口,文档);
以上是脚本宝典为你收集整理的Proxy(代理,拦截器),Reflect(反射)全部内容,希望文章能够帮你解决Proxy(代理,拦截器),Reflect(反射)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。