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(接口,文档);