代理属性查找
要影响属性查找,必须使用 get
处理程序。
在此示例中,我们修改属性查找,以便不仅返回值,还返回该值的类型。我们使用 Reflect 来缓解这个问题。
let handler = {
get(target, property) {
if (!Reflect.has(target, property)) {
return {
value: undefined,
type: 'undefined'
};
}
let value = Reflect.get(target, property);
return {
value: value,
type: typeof value
};
}
};
let proxied = new Proxy({foo: 'bar'}, handler);
console.log(proxied.foo); // logs `Object {value: "bar", type: "string"}`