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
Was this helpful?