32_Proxy拦截器

本题考点:Proxy、ES6[...]扩展字符、arguments

根据题目要求,给对象参数的某些属性设置禁止拦截器功能,核心步骤有:

  1. 通过[...prototypes]获取从第二个参数开始往后的所有参数
  2. 创建一个Proxy实例并且返回,该构造函数接收两个参数,第一个参数是被代理的对象,第二个参数是处理方法
  3. 在处理方法中设置“get”计算方法,该方法接收两个参数,第一个参数是被代理的对象,第二个参数是当前“get”读取的属性
  4. 当获取某个实例属性时,如果这个属性在[...prototypes]数组中,则返回”noright“

参考答案

const _proxy = (object,...prototypes) => {
    let privatePrototype = prototypes
    return new Proxy(object, {
        get(object, prototype) {
            if(privatePrototype.includes(prototype)) return 'noright'
            return object[prototype]
        }
    })
}