Proxy,代理,是ES6新增的功能,可以理解为代理器(即由它代理某些操作)。
Proxy 对象用于定义或修改某些操作的自定义行为,可以在外界对目标对象进行访问前,对外界的访问进行改写。
1. Proxy 定义
var proxy = new Proxy(target, handler)
new Proxy()
表示生成一个 Proxy 实例
- target:目标对象
- handler:一个对象,其属性是当执行一个操作时定义代理的行为的函数。
注意:要实现拦截操作,必须是对 Proxy 实例进行操作,而不是针对目标对象 target 进行操作。
首先,看个例子:
let handler = {
get: function(target, key, receiver) {
console.log(`getter ${
key}!`)
return Reflect.get(target, key, receiver)
},
set: function(target, key, value, receiver) {
console.log(`setter ${
key}=${
value}`)
return Reflect.set(target, key, value, receiver)
}
}
var obj = new Proxy({
}, handler)
obj.a = 1 // setter a=1
obj.b = undefined // setter b=undefined
console.