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

