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)
发表回复