匿名クラスのインスタンス化: 有害な慣行
JavaScript の領域における、クラスの省略によって示される匿名クラスの概念という名前は、ES6 の登場とともに登場しました。このアプローチは魅力的に見えるかもしれませんが、その使用法を賢明ではないものにする重大な欠点があります。
匿名クラスの本質は、その即時インスタンス化にあります。次のコード スニペットを考えてみましょう:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo'); console.log(entity.getName()); // Foo
このコードは、コンストラクターとメソッドを使用した匿名クラスの作成を示しています。 new キーワードを使用すると、クラスが即座にインスタンス化され、指定されたプロパティを持つオブジェクトが生成されます。ただし、このアプローチに関連する基礎的な仕組みと潜在的な落とし穴を理解することが重要です。
匿名クラス式の評価ごとに、新しいコンストラクター関数とそれに対応するプロトタイプ オブジェクトが生成されます。このメカニズムを使用して作成される後続のオブジェクトはクラスまたはプロトタイプから利点を継承しないため、これは重大な問題を引き起こします。さらに、コンストラクターはアクセス可能なままであり、新しいentity.constructorを使用して2番目のインスタンスを簡単に作成できるため、シングルトンオブジェクトを作成する意図が損なわれます。
これらの制限を考慮して、匿名クラスのインスタンス化の使用。シンプルなオブジェクト リテラルは、単純さ、読みやすさ、効率の点で優れた代替手段となります。次の点を考慮してください:
var entity = { name: 'Foo', getName() { return this.name; } }; console.log(entity.name); // Foo
匿名クラス パターンは他のプログラミング言語では受け入れられる可能性がありますが、JavaScript では根本的に機能が異なるため、コードの明確さとパフォーマンスを確保するためには避けるべきです。
以上が匿名クラスのインスタンス化が JavaScript に有害なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。