Proxy
根据题目要求,用Proxy代理一个对象
它可以代理我们对原目标的操作。相比Object.defineProperty方法,Proxy监听的事件更加方便。
在Proxy中共有13个捕获器,它们用于我们对对象、函数的方法调用监听。下面是Proxy捕获器以及它们的触发条件。
每当通过代理访问该对象拥有的属性时,“count”加1,当访问该对象没有的属性时,“count”减1,核心步骤有:
创建一个Proxy实例,该构造函数接收两个参数,第一个参数是被代理的对象,第二个参数是处理方法
在处理方法中设置“get”计算方法,该方法接收两个参数,第一个参数是被代理的对象,第二个参数是当前“get”读取的属性
当第二个参数在第一个参数中时,“count“加1,否则减1
参考答案:
let count = 0
const _proxy = object => {
let proxy = new Proxy(object, {
get: function(target, propKey) {
if(propKey in target) {
count ++
} else {
count --
}
}
})
return proxy
}