Proxy

链接

根据题目要求,用Proxy代理一个对象

它可以代理我们对原目标的操作。相比Object.defineProperty方法,Proxy监听的事件更加方便。

在Proxy中共有13个捕获器,它们用于我们对对象、函数的方法调用监听。下面是Proxy捕获器以及它们的触发条件。

JS进阶 | 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
}