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种
- get
- set
- deleteProperty
- defineProperty
- apply (call)
- constructor
- setPrototypeOf
- getPrototypeOf
- ownKeys (枚举)
- has (in, 包括原型链)
- getOwnPropertyDescriptor
- isExtensible
- 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的主要内容,如果未能解决你的问题,请参考以下文章