我们有以下代码:
/**
* @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并保持为null。
上述代码有什么问题,为了能够在代码中更改默认日期和视图值,如何更改?我不明白为什么作业什么都不做,虽然也没有产生任何错误。
答案 0 :(得分:1)
OPTIONS
的getter保持静态 - 无论何时调用它,它都会一直返回一个新创建的对象(其中defaultDate和viewDate为null)。您可以分配给返回的对象,但之后不会再保留对该对象的引用,并且进一步调用将返回 new 对象,因此永远不会看到更改。
您可能希望在构造函数中定义OPTIONS属性。