proxy的含义是代理,一般叫它拦截器,可以拦截对象上的一个操作,用法如下:通过new的方式创建对象,第一个参数是被拦截的对象,第二个参数是对象操作的描述,实例化以后返回一个新的对象,当我们对这个新的对象进行操作时就对调用我们描述中对应的方法
new Proxy(target,{
get(target,property){},
set(target,property){},
deleteProperty(target,property){}
})
区别:
1、Object.defineProperty只能监听属性的读写,而Proxy 除了读写以外还可以监听属性的删除方法的调用
2、 proxy 可以直接监听数组的变化
3、proxy以非侵入的方式监管对象的读写而 defineProperty 需要按照特定的方式定义对象的属性