get()

106 阅读1分钟

get()

  • get()捕获器会在获取属性值的操作中被调用。对应的反射 API 方法为 Reflect.get()。
    const myTarget = {};
    const proxy = new Proxy{myTarget, {
      get(target, property, receiver){
        console.log('get()');
        return Reflect.get(...arguments)
      }
    }}
    proxy.foo;
    // get()
    
  1. 返回值
    返回值无限制。

  2. 拦截的操作

    proxy.property
    proxy[property]
    Object.create(proxy)[property]
    Reflect.get(proxy, property, receiver)
    
  3. 捕获器处理程序参数
    target: 目标对象。
    property: 引用的目标对象上的字符串键属性。
    receiver: 代理对象或继承继承代理对象的对象。

  4. 捕获器不变式
    如果 target.property 不可写且不可配置,则处理程序返回的值必须与 target.property 匹配。
    如果 target.property 不可配置且[[get]]特性为 undefined,处理程序的返回值必须也是 undefined。