代理就是我们不直接操作原有对象,而是委托另一个对象去操作,但是实际执行的还是原对象的方法。它与装饰器模式的不同在于:装饰器模式生效的是原对象,代理模式生效的是新对象。
常见的运用有事件委托,vue中对data的代理等。
如proxy
const target = {
method() {
console.log('target method')
}
}
const proxy = new Proxy(target, {
get(target, prop) {
console.log('before call target method')
return target[prop]
}
})
proxy.method()