0

这种属性的 getter 和 setter 声明是否正确且最有效?

var AxisRange = (function(){
    function AxisRange(){
        this._userMaxValue = 0.0;

        Object.defineProperty(AxisRange.prototype, "UserMaxValue", {
            get : function(){
                return this._userMaxValue;
            },
            set  : function(value){
                if(value != this._userMaxValue){
                    this._userMaxValue = value;
                    this.validateUserMaxValue();
                    this.validateUserStep();

                    this.synchronizeActualRange();
                }
            }
        });
    }

    AxisRange.prototype.validateUserMaxValue = function(){
        alert("validateUserMaxValue");
    };

    return AxisRange;
})();

另外,我正在使用 JetBrains WebStorm 编写我的 JS 代码,它警告我

  1. AxisRange.prototype 中使用的Object.defineProperty不可分配给参数类型 Object。
  2. 一行if(value != this._userMaxValue)是说“可能无效使用这个”。

在我进一步输入代码之前,我需要确保我使用的是正确的。

4

1 回答 1

0

您正在构造函数中定义原型属性。这意味着每次创建新的 AxisRange 对象时都会重新定义它。将其移出构造函数。

您可能还想摆脱该闭包,因为您没有使用它来命名任何局部变量,并且它会使优化 JavaScript 的尝试变得复杂。(如果你曾经使用过 Google Closure Compiler,它会特别抱怨。)

于 2013-01-31T19:23:51.000 回答