ES Proxy

Posted 张仪ranck

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES Proxy相关的知识,希望对你有一定的参考价值。

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)

以上是关于ES Proxy的主要内容,如果未能解决你的问题,请参考以下文章

《es6标准入门》chapter11中关于Proxy的一个错误例子的纠正

ES6系列_13之Proxy进行预处理(简单学习)

proxy思考

ES Proxy

ES6----Proxy

ES6之Proxy及Proxy内置方法