Ответ
Proxy — это объект-обертка, который позволяет перехватывать и переопределять базовые операции для другого объекта (целевого объекта).
Пример:
const target = { name: 'John' };
const handler = {
get(target, prop) {
return prop in target ? target[prop] : 'Not found';
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name); // 'John'
console.log(proxy.age); // 'Not found'
Использование:
- Валидация данных
- Логирование обращений к объекту
- Кэширование
- Защита свойств объекта
Proxy поддерживает перехват множества операций: чтение (get), запись (set), удаление (deleteProperty) и другие.
Ответ 18+ 🔞
Слушай, а вот есть такая штука — Proxy. Представь себе, блядь, этакого подставного актёра, телохранителя для обычного объекта. Настоящий объект сидит себе тихо, а этот прокси-хукси стоит перед ним и всех встречает. И он может, сука, на лету перехватывать любые попытки достучаться до оригинала: прочитать свойство, записать, удалить — да всё, что угодно! И сделать с этой попыткой что захочет: подменить ответ, записать в лог, или нахуй послать, если что не так.
Смотри, как это выглядит в коде, тут всё просто:
const target = { name: 'John' }; // Вот наш скромняга, оригинальный объект
const handler = { // А это — его личный охранник с инструкциями
get(target, prop) {
// Если свойство есть — отдаём. Нет — посылаем нахуй с вежливым "Not found"
return prop in target ? target[prop] : 'Not found';
}
};
const proxy = new Proxy(target, handler); // Объединяем их в одну банду
console.log(proxy.name); // 'John' — всё ок, пропустили к боссу
console.log(proxy.age); // 'Not found' — а тут охранник сам ответил, даже не беспокоил!
И где, спрашивается, эта хуйня пригождается? Да везде!
- Проверка данных. Захочет кто-то записать в объект какую-то дичь — охранник (прокси) может сказать: "Э, пошёл нахуй, это не число!".
- Слежка. Можно всё логировать: кто, когда и к каким свойствам лез. Полная прослушка объекта, блядь.
- Кэширование. Если свойство вычисляется долго, прокси может запомнить результат и в следующий раз отдать его мгновенно, не дергая оригинал.
- Защита. Сделать объект как бы невидимым для удаления или изменения — настоящая крепость, ёпта!
Короче, эта штука (Proxy) умеет перехватывать овердохуищу операций: не только get и set, но и вызов функции, удаление, перечисление свойств — полный контроль, как в фильме про хакеров. Мощнейший инструмент, если знать, куда его приложить.