Паттерн Proxy (Прокси), туториал: кеширование функции с Proxy Подробнее разберём пример с «проксированием» функции (функция — это тоже объект в JS). В случае функций через Proxy можно перехватывать момент вызова функции (перехватчик apply) и, например, манипулировать аргументами до вызова. const func = () => {}; const proxyFunc = new Proxy(func, { apply: (func, _, args) => { // перехватчик вызова console.log(`Вызвана функция ${func} с параметрами ${args}`); },}); proxyFunc(1, 2);// Вызвана функция () => {} с параметрами 1,2 До вызова функции мы получаем референс на саму функцию, контекст и массив агрументов и можем с ними делать что угодно перед тем, как непосредственно вызвать (или даже не вызвать) функцию. К примеру, можно организовать кеш, чтобы по переданному набору аргументов запомнить вычисленное значение и при повторном вызове брать его из кеша. Аргументами функции, то есть и ключами в кеше, могут быть не только примитивы, но и объекты, за счёт того, что ключ формируется с помощью JSON.stringify. Таким образом, с помощью Proxy можно на коленке собрать «мидлвари» для объектов, массивов и функций, в общем-то, с любыми целями. Начать