es6的Reflect
Reflect对象与Proxy对象一样,也是ES6为了操作对象而提供的新API。Reflect对象的设计目的有这样几个。
(1) 将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。
(2) 修改某些Object方法的返回结果,让其变得更合理。比如,Object.defineProperty(obj, name, desc)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj, name, desc)则会返回false
var obj = {
name:"姜姜",
age:23,
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(接口,文档);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。