Задать вопрос
Carduelis
@Carduelis
Web-developer, front-end, js, less

Свойства объекта через get и простым присвоением имеют разные значения. Почему?

Почему задав "a" через геттер мы имеем другое значение? стабильное ли это поведение? В случае get-свойства мы можем не париться и подключать Logger отдельным файлом от задания переменной "a", не задумываясь о порядке подключенных js-файлов
a = 2;
var logger = {
  get a_via_get() {
    return a
  },
  a_via_key: a,
  makeLog : function() {
    console.log('a_via_get: ' + this.a_via_get); // выведет 3
    console.log('a_via_key: ' + this.a_via_key); // выведет  2
  }
}

a = 3;
logger.makeLog();
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Panya
Все логично ведь, геттер же — это обычная функция. Она у вас вызывается уже после того, как значение в a изменилось. А в ключе значение старое, потому что примитивные типы передаются по значению.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
a-via-key вы присвоили значение, что хранилось в "a" = 2
Затем вы "a" присвоили 3 и вывели это значение через window.a
Вот и результат
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы