对于属性的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代码,它警告我
AxisRange.prototype
中使用的Object.defineProperty
不能分配给参数类型Object。 if(value != this._userMaxValue)
表示“可能无效使用此内容”。
醇>
在进一步使用代码输入之前,我需要确保我使用的是正确的。
答案 0 :(得分:0)
您在构造函数中定义了一个prototype属性。这意味着每次创建新的AxisRange对象时都会重新定义它。将其移出构造函数。
您也可能希望摆脱该闭包,因为您没有使用它来命名任何局部变量,这会使尝试优化您的JavaScript变得复杂。 (如果您使用过谷歌闭包编译器会特别抱怨。)