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)