我正在努力使我们所有的 JS 代码都通过 jslint,有时需要对选项进行大量调整以获得遗留代码,以便以后正确修复它。
jslint 抱怨的一件事我没有解决方法。也就是说,当使用这样的结构时,我们会收到错误“不要在循环中创建函数”。
for (prop in newObject) {
// Check if we're overwriting an existing function
if (typeof newObject[prop] === "function" && typeof _super[prop] === "function" &&
fnTest.test(newObject[prop])) {
prototype[prop] = (function(name, func) {
return function() {
var result, old_super;
old_super = this._super;
this._super = _super[name];
result = func.apply(this, arguments);
this._super = old_super;
return result;
};
})(prop, newObject[prop]);
}
}
这个循环是经典继承的 JS 实现的一部分,其中扩展现有类的类在调用扩展类的成员时保留扩展类的 super 属性。澄清一下,上述实现的灵感来自John Resig 的这篇博文。
但是我们也有在循环中创建的其他函数实例。
目前唯一的解决方法是从 jslint 中排除这些 JS 文件,但我们希望使用 jslint 进行代码验证和语法检查,作为我们持续集成和构建工作流的一部分。
有没有更好的方法来实现这样的功能,或者有没有办法通过 jslint 调整这样的代码?