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)