代理属性查找

要影响属性查找,必须使用 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"}`