ES6之Reflect

                                                      ES6之Reflect
Object所有 的方法 Reflect都有,而且 Object方法失败会报错,但是Reflct会返回false  而且老写法 delect obj[name] 属于命令式,不太友好,所以既然js有新的,谁还会用旧方法呢!?
//先来模拟一下vue3中的核心吧
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);    //{name: "ly", age: "18"}name: "ly"age: "18"__proto__: Object "name" "cm"
console.log(receiver)		//Proxy {name: "ly", age: "18"}
},
  has(target, name) {
    console.log('has' + name);
    return Reflect.has(target, name);
  }
});
console.log(loggedObj.name="cm")

//更改this指向
var myObject = {
  foo: 1,
  bar: 2,
  get baz() {
    return this.foo + this.bar;
  },
};

var myReceiverObject = {
  foo: 4,
  bar: 4,
};

Reflect.get(myObject, 'baz', myReceiverObject) // 8

设置对象值
Reflect.set(obj, name, value) //相当于  obj[name] = value;

判断有没有指定值
Reflect.has(obj, name) // true  相当于  'foo' in obj ?

删除对象属性
Reflect.deleteProperty(obj, name);  //相当于 delete myObj.foo;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值