Я работаю над тем, чтобы весь наш 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?