代理屬性查詢

要影響屬性查詢,必須使用 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"}`