Что выведет код Middle Прототипы и классы обновлено

Геттеры и сеттеры

Вопрос

Что выведет код? По строке на каждый вывод.

const obj = {
  _v: 1,
  get v() { return this._v * 2; },
  set v(x) { this._v = x + 1; },
};
console.log(obj.v);
obj.v = 5;
console.log(obj._v);
console.log(obj.v);

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: 2, 6, 12. Почему так Аксессоры выглядят как обычные свойства, но выполняют код.

Что выведет

2
6
12

Разбор

Почему так

Аксессоры выглядят как обычные свойства, но выполняют код. Полезно для вычисляемых полей; ловушка - неявная работа при каждом обращении и путаница при копировании через спред (спред читает значение и теряет аксессор).

Вывод

2
6
12

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

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