0

プロパティのゲッターとセッターのそのような宣言は正しく、最も効率的ですか?

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 に答える