ES6之Reflect
Object所有 的方法 Reflect都有,而且 Object方法失败会报错,但是Reflct会返回false 而且老写法 delect obj[name] 属于命令式,不太友好,所以既然js有新的,谁还会用旧方法呢!?
let obj = {name:"ly",age:"18"};
var loggedObj = new Proxy(obj, {
get(target, name) {
console.log(target, name);
return Reflect.get(target, name);
},
deleteProperty(target, name) {
console.log('delete' + name);
return Reflect.deleteProperty(target, name);
},
set(target,name,value,receiver){
console.log(target,name,value);
console.log(receiver)
},
has(target, name) {
console.log('has' + name);
return Reflect.has(target, name);
}
});
console.log(loggedObj.name="cm")
var myObject = {
foo: 1,
bar: 2,
get baz() {
return this.foo + this.bar;
},
};
var myReceiverObject = {
foo: 4,
bar: 4,
};
Reflect.get(myObject, 'baz', myReceiverObject)
设置对象值
Reflect.set(obj, name, value)
判断有没有指定值
Reflect.has(obj, name)
删除对象属性
Reflect.deleteProperty(obj, name);