Динамическое обновление свойства объекта с условием при изменении ответа в условии
Пример кода:
let yes = true;
let obj = {
...(yes ? {result : 1} : 0)
}
console.log(obj);
yes = false;
console.log(obj);
Свойство result объекта независимо от значения переменной равняется 1. Причина более-менее понятна - калькуляция свойства производится при первом "чтении" объекта и не меняется при изменении переменной.
В ходе выполнения реального кода переменная yes несколько раз поменяет свое значение, и каждый раз необходимо обновлять поставленное изменяемое ею свойство объекта.
Такого рода условий ожидаю несколько десятков по 10 уровням глубины вложений объекта, поэтому создавать отдельную функцию для каждого свойства нерационально.
Как можно обновлять свойства объекта динамически? Или указать объекту на необходимость переопределить значения свойств в соответствии с поменявшимися условиями?
upd:
Применение геттера - действительно решение. Еще моей проблемой была проверка объекта, а не его значения.
Итоговый код:
let yes = true;
let obj = {
get result() {
return answer(yes)
}
}
console.log(obj.result);
yes = false;
console.log(obj.result);
function answer (r) {
if (r) {
return 1;
} else {
return 0;
}
}