ES6 では、匿名クラスを定義して即座にインスタンス化することができます。この構文は最初は魅力的に見えるかもしれませんが、その落とし穴と、一般的に避けるべき理由を理解することが重要です。
匿名クラスを直接インスタンス化するには、次の構文を使用します。
var entity = new class { constructor(name) { this.name = name; } getName() { return this.name; } }('Foo');
これにより、舞台裏で、インスタンス化ごとに新しいコンストラクター関数とプロトタイプ オブジェクトが作成されます。これは、このメソッドを使用して作成された複数のオブジェクトは、クラス継承やプロトタイプ関係からの利点を共有しないことを意味します。
さらに、このアプローチは、匿名クラスを使用してシングルトン オブジェクトを作成する試みを台無しにします。コンストラクター関数には依然としてアクセスして追加のインスタンスを作成するために利用でき、意図したシングルトンの動作が無効になります。
これらの警告を考慮して、すぐにインスタンス化される匿名クラスの使用を避けることを強くお勧めします。より単純なオブジェクト リテラルは、より効率的で簡単な代替手段を提供します:
var entity = { name: 'Foo', getName() { return this.name; } };
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3