04. Proxy Decorator

Прокси могут быть прототипами объекта. Тогда, некоторые операции, начинающиеся в объекте могут перехватываться прокси-прототипом.

Иногда есть необходимость перехватывать все методы, но и сохранять возможность перенаправлять их выполнение в target. В этом случае нужно повесить обработчик на доступ ко всем свойствам объекта, а затем делегировать их выполнение на объекте. Это делается при помощи комбинаций вызова двух функций

  • Перехватчик get вызывается при обращении к любому свойству объекта xXX.

  • Reflect.xXX

const handler = new Proxy({}, {
    get(target, trapName, receiver) {
        // Return the handler method named trapName
        return function (...args) {
            // Don’t log args[0]
            console.log(trapName.toUpperCase()+' '+args.slice(1));
            // Forward the operation
            return Reflect[trapName](...args);
        }
    }
});

> const target = {};
> const proxy = new Proxy(target, handler);
> proxy.foo = 123;
SET foo,123,[object Object]
> proxy.foo
GET foo,[object Object]
123

Last updated