我的简单建议是iniparam
在类定义之前定义。假设此代码位于模块中,则模块级别的变量可用于模块中的任何位置,但除此之外是私有的(除非您导出它们,否则在模块外部不可用)。
这种在想要使用共享常量的代码之前声明共享常量的概念在 Javascript 模块中非常常见。你甚至可以说实践import
或require()
正在做同样的事情——初始化模块中任何代码都可以使用的一些模块级常量。它甚至可以使解释器的效率更高一些,因为常量只是在模块初始化时创建/初始化一次,而不是每次调用某个函数时(尽管如果它是const
,解释器可能已经为此进行了优化)。
// declare shared constants
const iniparam = /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/;
class iniparser {
constructor (path) {
this.path = path;
}
#getValue (data, param) {
let value;
data.toString().match(/.*?\n|.+$/g).forEach(function(line) {
if (iniparam.test(line) && line.match(iniparam)[1] === param) {
value = line.match(iniparam)[2];
}
});
return value;
}
}
然后,此模块中的任何代码都可以访问该常量,但模块外的任何代码都无法访问它。
Note, in addition to declaring iniparam
as a shared constant, you could also make getValue()
itself a module level utility function. Since it doesn't seem to access instance data, it doesn't really need to be a method. If setValue()
also doesn't access instance data, it could also be a module-level utility function.
// declare shared constants
const iniparam = /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/;
function getValue (data, param) {
let value;
data.toString().match(/.*?\n|.+$/g).forEach(function(line) {
if (iniparam.test(line) && line.match(iniparam)[1] === param) {
value = line.match(iniparam)[2];
}
});
return value;
}
class iniparser {
constructor (path) {
this.path = path;
}
}