ES6 语法之 Proxy

一、概念

Proxy 是一种构造器,所以是通过new关键字实现的,从功能上讲,也是一种拦截器,在设置对象属性或者读取对象属性时做一层拦截操作。

二、参数说明

new Proxy(target,handler) 第一个参数 target 为原始对象,第二个参数 handler 为需要做拦截操作的 get 和 set 方法对象。get 和 set 方法有四个参数 get(target,key,value,proxy),分别为目标对象,键,值,实例对象本身。

var obj = new Proxy({name:'wxp'},{
get(target,key,value,proxy){console.log(2)},
set(target,key,value,proxy){console.log(3)}
});
obj.name = 1;//当设置对象属性值,打印3
obj.name;//当获取对象,打印2

三、应用场景

1.对 set 做拦截,比如规定设置属性值时必须符合某个要求。

//设置属性 point 必须是小于0的数字。
var obj = new Proxy({},{
get(target,key,value,proxy){},
set(target,key,value,proxy){if(value<0){throw new Error('The value seems invalid');}}
});
obj.point = -1;//报错

2.对 get 做拦截,比如没有某个属性的时候报错。

//没有 point 属性的时候报错。
var obj = new Proxy({point: 2}, {
    get(target, key, value, proxy){
      for (var pro in target) {
        if (target[pro]) {
          return target[pro]
        }
        else {
          throw new Error('The value seems invalid')
        }
  }},
  set(target, key, value, proxy){}
})
;
obj.age //报错,没有age这个属性

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值