1

我有一个验证器库,用于清理和验证字符串。验证器函数为他们找到的每个无效输入将消息推送到数组“错误”。

当所有输入的验证完成后,我将错误收集在一个变量中,如下所示:

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 函数。

4

2 回答 2

5

为什么不简单地这样做呢?

Validator.prototype.getErrors = function () {
    var r = this._errors;
    this._errors = []; 
    return r;
}

但按照惯例,命名的函数getXXX不应该有任何副作用。在函数中清除源getErrors有点令人惊讶。如果您只想保留一个功能,您可以将其称为popErrors例如。

于 2013-10-16T08:19:32.633 回答
1

为什么不克隆错误数组,然后在返回克隆的数组值之前重置它

如何在 Javascript 中克隆对象数组?

Validator.prototype.getErrors = function () {
    new_array = this._errors.slice(0);
    this._errors = [];
    return new_array;
}
于 2013-10-16T08:22:32.600 回答