Je suis en train de travailler sur la fabrication de tous nos code JS passer à travers jslint, parfois avec beaucoup de peaufinage avec les options pour obtenir le code hérité passer pour l'instant sur l'intention de le fixer correctement plus tard.
Il y a une chose que jslint se plaint que je n'ai pas le contourner. C'est lors de l'utilisation de constructions de ce genre, nous obtenons l'erreur à Ne pas faire de fonctions à l'intérieur d'une boucle.'
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]);
}
Cette boucle fait partie d'un JS de mise en œuvre de la classique héritage où les classes qui étendent les classes existantes de conserver les super-propriété de l'extension de la classe lors de l'appel d'un membre de la classe étendue. Juste pour préciser, la mise en œuvre ci-dessus est inspiré par ce post de blog par John Resig.
Mais nous avons aussi d'autres instances de fonctions créées à l'intérieur d'une boucle.
La seule solution pour l'instant est à exclure ces fichiers JS de jslint, mais nous aimerions utiliser jslint pour le code de validation et de vérification de la syntaxe dans le cadre de notre intégration continue et de workflow de build.
Est-il une meilleure façon de mettre en œuvre des fonctionnalités comme cela ou est-il un moyen de bidouiller le code comme ceci par le biais de jslint?