proxy 对象
可以理解为在目标对象之前架设一层“拦截器”。通过英文意思[代理]也可以得出,它是目标对象的代理对象,来处理对于目标对象的某些操作。就是说,对于目标对象的操作需要先通过代理对象。所以,我们可以通过Proxy对象来对目标对象的访问进行过滤与改写。
- proxy语法
var proxy = new Proxy(target, handler) //get 和 set const a = {name: 'Alan',age: 24,hobby: 'play' } const p = new Proxy(a, {//get方法用于拦截某个属性的读取操作,可以接受三个参数,依次为目标对象、属性名和 proxy 实例本身,最后一个参数可选get(target, propKey, receiver) {console.log(target, propKey, receiver)//{name: 'Alan', age: 24, hobby: 'play'} //'age'//Proxy {name: 'Alan', age: 24, hobby: 'play'}return target[propKey]},//set要比get多一个参数value,即要改变成什么值,返回值是布尔型set(target,propKey,value,receiver){console.log(target,propKey,value,receiver)return true},//deleteProperty方法在delete对象某个属性时触发。传入两个参数,一个是目标对象,一个是属性名。deleteProperty(target, propKey) {console.log(target, propKey)delete target[propKey]return true} }) p.age //24 delete p.name console.log(a.name) //undefined
optionApi