JavaScript OPTIONS对象无法更改

时间:2018-03-20 21:33:07

标签: javascript html angularjs

我们有以下代码:



/**
     * @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。

上述代码有什么问题,为了能够在代码中更改默认日期和视图值,如何更改?我不明白为什么作业什么都不做,虽然也没有产生任何错误。

1 个答案:

答案 0 :(得分:1)

OPTIONS的getter保持静态 - 无论何时调用它,它都会一直返回一个新创建的对象(其中defaultDate和viewDate为null)。您可以分配给返回的对象,但之后不会再保留对该对象的引用,并且进一步调用将返回 new 对象,因此永远不会看到更改。

您可能希望在构造函数中定义OPTIONS属性。