davisaliw,
function cfFactory() {
var cf = {
doe_cnt: t4q.H5I,
doact: t4q.N40,
chknull: function (q) {
return (null == q) ? -1 : q;
},
getFloatVal: function (Y) {
if (cf.chknull(Y) != -1 && !isNaN(Y)) {
var b = parseFloat(Y);
if (!isNaN(b)) return b.toFixed(2);
}
return -1;
},
cdoa: function (Y) {
if (Y) {
var v = cf.getFloatVal(Y.alpha),
h = cf.getFloatVal(Y.beta),
W = cf.getFloatVal(Y.gamma),
F = cf.doe_cnt + "," + v + "," + h + "," + W + ";";
cf.doact = cf.doact + F,
cf.doe_cnt++;
console.log(cf.doact);
}
}
}
return cf;
}
Просто не используйте в таких случаях глобальные переменные.
Делайте эту переменную в контексте функции, и передавайте её в другую функцию в качестве параметров. Т.е. в вашем случае должно быть так
function cfFactory() {
var t4q = {
'H5I': 0,
'N40': "",
};
var cf = {
doe_cnt: t4q.H5I,
doact: t4q.N40,
chknull: function (q) {
return (null == q) ? -1 : q;
},
getFloatVal: function (Y) {
if (cf.chknull(Y) != -1 && !isNaN(Y)) {
var b = parseFloat(Y);
if (!isNaN(b)) return b.toFixed(2);
}
return -1;
},
cdoa: function (Y) {
if (Y) {
var v = cf.getFloatVal(Y.alpha),
h = cf.getFloatVal(Y.beta),
W = cf.getFloatVal(Y.gamma),
F = cf.doe_cnt + "," + v + "," + h + "," + W + ";";
cf.doact = cf.doact + F,
cf.doe_cnt++;
console.log(cf.doact);
}
}
};
return cf;
}
function test(testobj) {
var cf = cfFactory();
cf.cdoa(testobj);
};
module.exports.test = test;
Функция cfFactory всегда возвращает "новую" переменную cf, т.е. другой объект.
cfFactory() !== cfFactory() // true