> Как отслеживать изменения поля объекта без изменения исходного кода? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Дом.рф
Стек: JavaScript
> Пример ответа
В JavaScript для отслеживания изменений поля объекта без изменения исходного кода можно использовать Proxy - встроенный механизм, позволяющий перехватывать операции над объектом.
Пример:
JAVASCRIPTconst user = { name: 'Иван', age: 30 };const handler = {set(target, property, value) {console.log(`Поле "${property}" изменено с ${target[property]} на ${value}`);target[property] = value;return true; // обязательно для корректной работы}};const proxyUser = new Proxy(user, handler);proxyUser.name = 'Петр'; // Выведет: Поле "name" изменено с Иван на ПетрproxyUser.age = 31; // Выведет: Поле "age" изменено с 30 на 31
Преимущества:
- Не требует изменения исходного кода объекта.
- Можно отслеживать любые поля (включая динамически добавляемые).
- Поддерживает и другие операции (get, deleteProperty и т.д.).
Альтернативы:
Object.defineProperty()- но требует явного переопределения каждого поля.Object.observe()- устарел и не поддерживается в современных браузерах.
Важно: Proxy работает только с объектами, а не с примитивами. Для глубокого отслеживания вложенных объектов потребуется рекурсивная обёртка.
> Похожие задачи по frontend
Что такое ECMAScript
Уровень: juniorКатегория: Технические вопросы
Компания: EdenAI
Стек: JavaScript
Как работает наследование в JavaScript с использованием super и методов родительского класса?
Уровень: seniorКатегория: Технические вопросы
Компания: EPAM
Стек: JavaScript
Как колбэк из setTimeout попадает к выполнению?
Уровень: seniorКатегория: Технические вопросы
Компания: Дом.рф
Стек: JavaScript
Зачем нужен event loop?
Уровень: seniorКатегория: Технические вопросы
Компания: Дом.рф
Стек: JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью