Proxy是什么,如何用

Proxy

是什么

ES6新增的一个代理,可以获取传入的目标,经过处理函数处理后返回

 let obj = {
    name: '大亦',
    age: 21
  };
  let newObj = new Proxy(obj, {
    get(target, property) {
      if (property in target) {
        return target[property];
      } else {
        throw new ReferenceError(`${property} 不在这个对象里`);
      }
    }
  });
  console.log(newObj.name);
  console.log(newObj.age);
  console.log(newObj.grade);

控制台的输出

怎么用

ES6定义了一个新的全局构造函数Proxy。它带有两个参数:目标对象和处理程序对象。

var target = {}, handler = {};
var proxy = new Proxy(target, handler);

代理的所有方法都会转发给target也就意味着,调用proxy.[aaa]他将只返回target.[aaa]

代理有时会失败类型检查目标是否通过。例如,即使代理服务器的目标是DOM元素,代理服务器也不是真正的元素。

用处

每当您要观察或记录对对象的访问时,它们无疑很有用。它们将方便调试。测试框架可以使用它们来创建模拟对象。

如果您需要的行为略微超出普通对象的行为,则代理很有用:例如,懒散地填充属性。

e.g.

拦截所有设置对象,并在控制台打印错误

var target = {};
var handler = {
  set: function (target, key, value, receiver) {
    throw new Error("请不要对这个对象的属性进行修改");
  }
};
var proxy = new Proxy(target, handler);
proxy.name = "angelina";
// Error:请不要对这个对象的属性进行修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值