我有一个验证器库,它正在清理和验证字符串。 验证器函数正在将消息推送到数组“errors”,以查找它们找到的每个无效输入。
当对所有输入的验证完成时,我会收集如下变量中的错误:
var errors = validator.getErrors();
// Function definition
Validator.prototype.getErrors = function () {
return this._errors;
}
var“errors”现在是一个包含0到几个字符串元素的数组。在此之后,我正在调用一个函数来清空验证器中的错误。
validator.clearErrors();
// Function definition
Validator.prototype.clearErrors = function () {
this._errors = [];
}
问题:我可以以某种方式重新编写getErrors()函数,这样它也是空的内部_errors变量吗?...然后我可以完全删除clearErrors函数。
答案 0 :(得分:5)
为什么不简单呢?
Validator.prototype.getErrors = function () {
var r = this._errors;
this._errors = [];
return r;
}
但是传统上,名为getXXX
的函数不应该有任何副作用。清除getErrors
函数中的源代码有点令人惊讶。如果你只想保留一个函数,你可以称它为popErrors
,例如。
答案 1 :(得分:1)
为什么不克隆错误数组,然后在返回克隆的数组值
之前重置错误How do you clone an Array of Objects in Javascript?
Validator.prototype.getErrors = function () {
new_array = this._errors.slice(0);
this._errors = [];
return new_array;
}