У нас есть такой код:
/**
* @type {object}
*/
Object.defineProperty(DateTimePicker.prototype,
"OPTIONS",
{
enumerable: true,
get: function () {
return {
useStrict: false,
format: this.FORMAT,
maxDate: this.MAX_DATE,
minDate: this.MIN_DATE,
defaultDate: null,
viewDate: null,
icons: this.ICONS
};
}
});В других местах кода мы используем
let value = services.Date.momentFromDateString(val).format(this.FORMAT);
this.OPTIONS.defaultDate = value;
this.OPTIONS.viewDate = value; Однако я проверяю this.OPTIONS.defaultDate сразу после присваивания, и он остается нулевым.
Что не так в приведенном выше коде и как его изменить, чтобы иметь возможность изменять дату по умолчанию и значение просмотра в коде? Я не понимаю, почему назначение ничего не делает, хотя и не вызывает ошибок.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Геттер OPTIONS остается статическим - он продолжает возвращать вновь созданный объект (где defaultDate и viewDate равны нулю) всякий раз, когда он вызывается. Вы можете назначить возвращаемый объект, но сразу после этого ссылка на этот объект не остается, и дальнейшие вызовы возвращают объекты новый, поэтому изменение никогда не будет видно.
Вместо этого вы можете определить свойство OPTIONS в конструкторе.