关于es6:ES-Proxy

8次阅读

共计 771 个字符,预计需要花费 2 分钟才能阅读完成。

Proxy 批改操作的默认行为

const obj = {
  name: "ranck",
  message: "hello"
}
const handler = {

}

const proxy = new Proxy(obj, handler)

一个对象的操作方法有 13 种

  1. get
  2. set
  3. deleteProperty
  4. defineProperty
  5. apply (call)
  6. constructor
  7. setPrototypeOf
  8. getPrototypeOf
  9. ownKeys (枚举)
  10. has(in,包含原型链)
  11. getOwnPropertyDescriptor
  12. isExtensible
  13. preventExtensions

勾销 Proxy 代理

Proxy.revocable() 办法返回一个可勾销的 Proxy 实例。

const {proxy, revoke} = Proxy.revocable(obj,handler);

revoke() // 这个函数调用后,proxy 就不能失效了 

this

代理对象种 this,指向的是 proxy,而不是 target 自身

Proxy 利用

做一些操作的时候,同时做其余事件

  • 数据驱动
function proxyFn(obj, fn) {
 var handler = {get(obj, prop) {fn();
     Reflect.get(obj, prop)
   }
 }
 
 return new Proxy(obj, handler)
}

  • 间接拜访变量

拜访变量的过程代理申请 http 接口的行为

function createServe(baseUrl) {return new Proxy({}, {get (target, prop) {
    return fetch(`${baseUrl}/${prop}`
    )
  }
})
}
const serverProxy = createServe("/v1")
serverProxy.dd.then(console.log,console.log)
正文完
 0