JavaScript·100 питань

[ITEM 2] QUESTION: Що таке Proxy?

Відповідь

Об'єкт Proxy в сучасному JavaScript є спеціальною обгорткою навколо іншого об'єкта, яка дозволяє перехоплювати та перевизначати базові операції з ним, такі як читання властивостей, запис, виклик функцій та багато іншого. Синтаксис створення проксі виглядає як new Proxy(target, handler), де target — це оригінальний об'єкт, а handler — об'єкт, що містить функції-перехоплювачі, які називають пастками або traps.

Серед найпопулярніших пасток можна виділити get для перехоплення читання властивостей, set для перехоплення запису, apply для перехоплення виклику функцій та construct для перехоплення створення екземплярів через оператор new. завдяки цьому Proxy відкриває величезні можливості для метапрограмування, створення кастомної поведінки та вирішення архітектурних завдань, які раніше були неможливими або вимагали складних милиць.

На практиці Proxy активно використовується для реалізації реактивності в сучасних фреймворках, коли зміна стану об'єкта автоматично запускає перемальовування користувацького інтерфейсу. Також проксі незамінний для валідації даних «на льоту»: наприклад, можна створити пастку set, яка перевірятиме, щоб властивість age, що присвоюється, завжди була додатним числом, і викидатиме помилку в іншому випадку. Інші сценарії включають логування доступу до властивостей, віртуалізацію великих масивів або створення об'єктів із захистом від доступу до неіснуючих полів.

Під час написання пасток часто виникає необхідність виконати стандартну дію оригінального об'єкта. Для цього використовується вбудований об'єкт Reflect, методи якого повністю дублюють пастки Proxy. Використання Reflect усередині handler гарантує коректний контекст виконання this та правильну обробку внутрішніх механізмів JavaScript.

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем