私はすべての JS コードが jslint を通過するように取り組んでおり、後で適切に修正するつもりで、今のところレガシー コード パスを取得するためのオプションで多くの調整を行っています。
私が回避策を持っていないことについて jslint が不平を言うことが 1 つあります。つまり、このような構成を使用すると、「ループ内で関数を作成しないでください」というエラーが発生します。
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 実装の一部であり、既存のクラスを拡張するクラスは、拡張されたクラスのメンバーを呼び出すときに、拡張されたクラスのスーパー プロパティを保持します。明確にするために、上記の実装は、John Resigによるこのブログ投稿に触発されています。
しかし、ループ内で作成された関数の他のインスタンスもあります。
これまでの唯一の回避策は、これらの JS ファイルを jslint から除外することですが、継続的インテグレーションとビルド ワークフローの一部として、コードの検証と構文チェックに jslint を使用したいと考えています。
このような機能を実装するためのより良い方法はありますか、それとも jslint を介してこのようなコードを微調整する方法はありますか?