【发布时间】:2020-12-06 08:56:40
【问题描述】:
Proxy 有一个trap for new operator,理论上它应该允许我们创建将构造函数参数传递给目标对象的代理。它的工作原理示例如下所示:
function monster1(disposition) {
this.disposition = disposition;
}
const handler1 = {
construct(target, args) {
console.log('monster1 constructor called');
// expected output: "monster1 constructor called"
return new target(...args);
},
get(...args) {
console.info('get trap triggered!')
}
};
const proxy1 = new Proxy(monster1, handler1);
const instance = new proxy1('fierce')
console.log(instance.disposition);
// expected output: "fierce"
console.log(instance.unknownProp);
// expected output: "get trap triggered!" <-- doesn't happen
这非常有效。除了instance.unknownProp 现在不再触发get 陷阱。我现在如何拦截属性?
【问题讨论】:
-
陷阱是针对
proxy1本身的属性访问,例如proxy1.unknownProp。要捕获实例上的属性访问,您需要在new处理程序中创建一个新代理。
标签: javascript javascript-proxy