美文网首页
ES6 - Proxy

ES6 - Proxy

作者: 恒星的背影 | 来源:发表于2018-10-01 20:12 被阅读0次

    构造一个 Proxy:

    const proxy = new Proxy(target, handler)
    

    举例:

    const proxy = new Proxy({}, {
      get() {
        return 35
      }
    })
    
    proxy.time    // 35
    proxy.name    // 35
    

    Proxy 支持的拦截操作:

    get(target, propKey, receiver)    属性的读取
    set(target, propKey, value, receiver)    属性的设置
    has(target, propKey)    拦截 propKey in proxy 的操作
    deleteProperty(target, propKey)    拦截 delete proxy[propKey] 的操作
    ownKeys(target)
    getOwnPropertyDescriptor(target, propKey)
    defineProperty(target, propKey, propDesc)
    preventExtensions(target)
    getPrototypeOf(target)
    isExtensible(target)
    setPrototypeOf(target, proto)
    apply(target, object, args)
    construct(target, args)
    

    实例方法盘点

    get :
    可以 get 拦截,实现读取数组负数的索引

    set :
    可以通过 set 限制对属性的修改,比如限制属性值不大于100,限制属性值类型等(可用于数据验证)
    对 set 行为的监控,可用于数据绑定,实现实时更新视图
    可以设置内部属性,结合 get 和 set 方法,防止内部属性被外部读写

    apply :
    拦截 proxy() , proxy.call() , proxy.apply()


    不作任何拦截的情况下,也不能保证和目标对象的行为保持一致,因为 this 的指向是不同的

    相关文章

      网友评论

          本文标题:ES6 - Proxy

          本文链接:https://www.haomeiwen.com/subject/aopyoftx.html