Ответ вслух Middle Современный синтаксис обновлено

Proxy и Reflect

Вопрос

Что такое Proxy и где он реально применяется?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Proxy оборачивает объект и перехватывает операции с ним - get, set, has, deleteProperty, apply. Ловушка получает цель и ключ и может вернуть что угодно.

Что должно прозвучать в ответе

  • объект-обёртка, перехватывающий операции: get, set, has, deleteProperty

  • ловушки позволяют менять поведение доступа, не трогая исходный объект

  • Reflect даёт стандартные реализации этих же операций

  • на Proxy построена реактивность Vue 3 и MobX

  • цена: медленнее обычного доступа, отладка сложнее

Что могут спросить следом

  • Как на Proxy сделать объект с значением по умолчанию
  • Почему Proxy нельзя полностью подменить объектом
  • Как устроена реактивность на Proxy в двух словах

Разбор

Proxy оборачивает объект и перехватывает операции с ним - get, set, has, deleteProperty, apply. Ловушка получает цель и ключ и может вернуть что угодно. Reflect - набор функций со стандартным поведением тех же операций, чтобы из ловушки легко вызвать «как было бы без прокси».

Реальные применения: реактивность (Vue 3, MobX отслеживают чтение свойств именно так), валидация при записи, объекты с значениями по умолчанию, мягкие заглушки в тестах. Цена - доступ заметно медленнее обычного и стек в отладчике становится глубже.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме