如何返回一个variables,同时重置/删除它

我有一个validation器库,这是消毒和validationstring。 validation器函数将消息推送到数组“错误”,以查找他们find的每个无效input。

当所有inputvalidation完成后,我收集这样的variables中的错误:

var errors = validator.getErrors(); // Function definition Validator.prototype.getErrors = function () { return this._errors; } 

var“errors”现在将是一个包含0到几个string元素的数组。 在此之后,我正在调用清空validation器中的错误的函数。

 validator.clearErrors(); // Function definition Validator.prototype.clearErrors = function () { this._errors = []; } 

问题:我可以以某种方式重写getErrors()函数,使它也是空的它是内部_errorsvariables?…然后我可以完全删除clearErrors函数。

为什么不简单呢?

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

但传统上,名为getXXX函数不应该有任何副作用。 清除getErrors函数中的源代码有点令人惊讶。 如果你只想保留一个函数,你可以把它popErrors

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

如何在JavaScript中克隆一个对象数组?

 Validator.prototype.getErrors = function () { new_array = this._errors.slice(0); this._errors = []; return new_array; }