Я работаю над тем, чтобы все наши 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 расширенного класса при вызове члена расширенного класса. Просто для пояснения, вышеприведенная реализация вдохновлена этим сообщением от Джона Ресига.
Но у нас также есть другие экземпляры функций, созданных в цикле.
Единственным обходным решением до сих пор является исключение этих JS файлов из jslint, но мы хотели бы использовать jslint для проверки кода и проверки синтаксиса как часть непрерывного процесса интеграции и сборки.
Есть ли лучший способ реализовать такие функции или есть способ настроить такой код через jslint?