如何返回一个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; }