ES6 では、匿名クラスを定義して、それらをすぐにインスタンス化することができます。この構文は最初は魅力的に見えるかもしれませんが、その落とし穴と、一般的にこの構文を避けるべき理由を理解することが重要です。
匿名クラスを直接インスタンス化するには、次の構文を使用します:
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
舞台裏では、これにより、インスタンス化ごとに新しいコンストラクター関数とプロトタイプ オブジェクトが作成されます。これは、このメソッドを使用して作成された複数のオブジェクトは、クラスの継承やプロトタイプの関係による利点を共有しないことを意味します。
さらに、このアプローチは、匿名クラスを使用してシングルトン オブジェクトを作成する試みを台無しにします。コンストラクター関数には依然としてアクセスして追加のインスタンスを作成するために利用でき、意図したシングルトンの動作が無効になります。
これらの警告を考慮して、すぐにインスタンス化される匿名クラスの使用を避けることを強くお勧めします。より単純なオブジェクト リテラルは、より効率的で簡単な代替手段を提供します:
var entity = { name: 'Foo', getName() { return this.name; } };
以上が匿名クラスの即時インスタンス化を避けるべき場合は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。