Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。
简单来说,对于使用了 Proxy 进行代理的对象。当外部访问对象时,都会经过一个你自定义的流程,在这个拦截的流程中你可以控制过程和结果。
使用方法:
let p = new Proxy(target, handler);
参数:
target: 用 Proxy 包装的目标对象(可以是任何类型的对象,包括数组、函数,甚至是一个代理)。
handler: 一个对象,其属性是当执行一个操作时定义代理行为的函数。
function updateView () {
console.log('更新视图')
}
let data = {
name: 'zhoujiawei'
}
let p = new Proxy(data, {
get (target, key) {
return target[key]
},
set (target, key, newValue) {
if (newValue !== target[key]) {
updateView()
target[key] = newValue
}
}
})
p.name = 'allen'
console.log(p.name) // allen