Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: setter, JavaScript, object, property, interception

Как setter объекта может использоваться для перехвата присваивания без изменения кода вызывающей стороны?

Проверяет понимание механизма перехвата присваивания свойств объекта через setter в JavaScript без изменения кода вызывающей стороны.

Короткий ответ

Setter — это метод объекта, который вызывается при присваивании значения свойству. Он позволяет выполнить дополнительную логику, например валидацию или трансформацию данных, без изменения кода, который присваивает значение. Для этого свойство определяется через дескриптор в Object.defineProperty или через синтаксис set в классах/объектных литералах.

Длинный ответ

Что такое setter и как он работает?

Setter (сеттер) — это специальный метод объекта, который автоматически вызывается при попытке присвоить значение свойству. Он позволяет перехватить операцию присваивания и выполнить произвольный код, например, проверку корректности данных, преобразование значения или логирование. При этом вызывающая сторона продолжает использовать обычный синтаксис присваивания (obj.prop = value), не подозревая о наличии дополнительной логики.

Пример использования setter

Рассмотрим объект, который хранит температуру в градусах Цельсия, но мы хотим, чтобы при присваивании значения в Фаренгейтах оно автоматически конвертировалось. Сеттер позволяет это сделать прозрачно:

const thermometer = {
  _celsius: 0,
  set fahrenheit(value) {
    this._celsius = (value - 32) * 5 / 9;
  },
  get fahrenheit() {
    return this._celsius * 9 / 5 + 32;
  }
};

thermometer.fahrenheit = 100; // вызывается setter
console.log(thermometer.fahrenheit); // 100
console.log(thermometer._celsius); // 37.777...

В этом примере вызывающий код просто присваивает свойству fahrenheit число 100, не зная о конвертации. Сеттер перехватывает присваивание и преобразует значение.

Где применяется?

  • Валидация данных перед сохранением (например, проверка, что возраст положительный).
  • Автоматическое обновление зависимых свойств (например, при изменении радиуса пересчитывается площадь круга).
  • Логирование изменений свойств для отладки.
  • Реализация реактивности в фреймворках (например, Vue.js использует сеттеры для отслеживания изменений).

Вывод

Setter — мощный инструмент для инкапсуляции логики присваивания, позволяющий добавлять поведение без изменения вызывающего кода. Его стоит применять, когда нужно контролировать или модифицировать данные при записи свойства, сохраняя простой интерфейс для внешнего использования.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#setter

#JavaScript

#object

#property

#interception

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию