> Как отслеживать изменения поля объекта без изменения исходного кода? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Дом.рф

Стек: JavaScript

> Пример ответа

В JavaScript для отслеживания изменений поля объекта без изменения исходного кода можно использовать Proxy - встроенный механизм, позволяющий перехватывать операции над объектом.

Пример:

JAVASCRIPT
const 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 работает только с объектами, а не с примитивами. Для глубокого отслеживания вложенных объектов потребуется рекурсивная обёртка.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью