我有一些 javascript 类 someClass
和初始化函数 init
检查构造函数参数。带有这个参数的对象相当大,这个函数变得太大了。
function SomeClass (paramObj) {
this.inputHourId;
this.inputHourName;
this.inputHourValue;
......
......
this.Init = function (paramObj) {
if (typeof paramObj.hourOptions.inputName == "undefined") {
this.inputHourName = "default_name";
} else {
this.inputHourName = paramObj.hourOptions.inputName;
}
if (typeof paramObj.hourOptions.inputValue == "undefined") {
this.inputHourValue = "default_value";
} else {
this.inputHourValue = paramObj.hourOptions.inputValue;
}
......
......
......
}
this.Init(paramObj);
}
为了避免代码重复并使其更具可读性,我决定创建一个函数,该函数将使用 check 进行 var 初始化
this.initVar = function (veriable, value) {
if (typeof value == "undefined") {
veriable = "some_default_value";
} else {
veriable = val;
}
}
添加 initVar
函数后,我的 Init
函数应该如下所示:
this.Init = function (paramObj) {
// Input hour initialization
this.initVar(this.inputHourId, paramObj.hourOptions.inputId);
this.initVar(this.inputHourName,
paramObj.hourOptions.inputName);
this.initVar(this.inputHourValue, paramObj.hourOptions.inputValue);
....
....
....
}
但在那之后类变量 this.inputHourName
仍然是 undefined
现在是问题。如何在函数的帮助下初始化我的类属性?或者我如何传递函数参数等类属性?
最佳答案
那是因为当您将 this.inputHourId
传递给 initVar()
时,它会在变量更新时创建一个副本;那不是你想要的。
你可以将initVar()
改写成这样;它使用变量的名称作为字符串而不是变量本身。然后它使用 this[variable]
来更新实际的实例变量。
this.initVar = function (variable, value) {
if (typeof value == "undefined") {
this[variable] = "some_default_value";
} else {
this[variable] = val;
}
}
然后,你可以这样调用它:
this.initVar('inputHourId', paramObj.hourOptions.inputId);
关于javascript - 初始化类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461688/