0
재귀 함수를 호출 중이며 재귀 호출에서받은 오류를 호출자에게 연결하고 싶습니다. 다음은 코드입니다. 그러나 _errors 변수가 내 인스턴스간에 공유되는 것처럼 보입니다. 어떻게이 _errors 변수를 인스턴스에 고유하게 만들 수 있습니까?자바 스크립트 변수가 인스턴스간에 공유 됨
var check = require('./validator.js').check;
var QV = function() {
this._errors = {};
}
QV.prototype.a = function (str) { check(str).len(1,4).notNull().isInt() };
QV.prototype.b = function (str) { check(str).len(1,4).notNull().isInt() };
QV.prototype.c = function (str) { check(str).len(1,4).notNull().isInt() };
QV.prototype.validator = function (opt) {
qv = new QV();
for(var i in opt) {
try {
if (opt[i].toString() === '[object Object]')
{
var errors = qv.validator(opt[i]);
console.log(qv._errors); //Here the qv._errors is overwritten with the 'sub' errors. I lose the error 'a' here.
qv._errors[i] = errors;
}
else
{
qv[i](opt[i]);
}
} catch (e) {
qv._errors[i] = e;
}
}
return qv._errors;
}
module.exports = QV;
는 그리고 검증
var test = require('./test_validator.js');
var q = new test();
msg = q.validator({
'a' : "asdf",
'sub' : {
'b' : "asdf",
'c' : "bsdf"
}
});
console.log(msg);
"var"로 "qv"를 선언하십시오! 현재 글로벌 변수입니다. 다른 말로하면 단 하나의 "qv"가 있습니다. – Pointy
좋습니다. 그것은 작동합니다. 심지어 var없이 선언 할 때조차도 qvx로 이름을 변경하더라도 오류가 발생하지 않습니다. Howver, 일단 var로 선언하면 작동합니다. 감사! – John