通常、コードではデザイン パターンのカスタム オブジェクトに非常によく似たものを使用します。
しかし、JSLint は次のような構造に眉をひそめます。
function MyClass() { this.init(); }
new MyClass(data);
オブジェクトは作成直後に破棄されているため、何にも使用されていません。これを変数に代入することで、JSLint をだましてこれを無視させることはできますが、JSLint (そして多くの JavaScript 愛好家はそう推測しています) がこのパターンを思いとどまらせていることに変わりはありません。
では、JavaScript コンストラクターで副作用を使用することが悪い習慣と見なされるのはなぜでしょうか?
それだけの価値があるため、これは良い習慣だと思いました。
- セットアップ関数は 1 つしかないため、後でアクセスするために MyClass インスタンスのリストを管理している場合など、保守が容易になります。(オブジェクトを配列にプッシュすることは副作用です。コンストラクターが「良い習慣」に戻った後にそれを行う必要があります=維持するのが難しくなります。)
- これには独自のプロトタイプがあるため、「クラスの所有権」があります。Firebug は、これを単なる Object ではなく MyClass のインスタンスとして報告します。(これは、私の意見では、他の設計パターンよりも優れています。)