题解 | #Proxy拦截器#
Proxy拦截器
http://www.nowcoder.com/practice/bd313bf21dc342a981f6ed87e21308b7
32_Proxy拦截器
本题考点:Proxy、ES6[...]扩展字符、arguments
根据题目要求,给对象参数的某些属性设置禁止拦截器功能,核心步骤有:
- 通过[...prototypes]获取从第二个参数开始往后的所有参数
- 创建一个Proxy实例并且返回,该构造函数接收两个参数,第一个参数是被代理的对象,第二个参数是处理方法
- 在处理方法中设置“get”计算方法,该方法接收两个参数,第一个参数是被代理的对象,第二个参数是当前“get”读取的属性
- 当获取某个实例属性时,如果这个属性在[...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]
}
})
}