ホームページ  >  記事  >  ウェブフロントエンド  >  ES6 で即座にインスタンス化される匿名クラスは悪い考えですか?

ES6 で即座にインスタンス化される匿名クラスは悪い考えですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 11:18:02191ブラウズ

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

即時にインスタンス化される匿名クラス: 災害へのレシピ

ES6 では、匿名クラスを定義する機能により、クラス宣言に糖衣構文が提供されます。このようなクラスの即時インスタンス化は便利ですが、多くの問題を引き起こす可能性があります。

舞台裏で何が起こっているのですか?

匿名クラスが即時にインスタンス化されると、JavaScript は新しいコンストラクター関数を作成し、プロトタイプオブジェクトを動的に作成します。式の各評価の結果、個別のコンストラクター関数とプロトタイプが生成されます。

即時インスタンス化の欠点

この方法には、いくつかの重大な欠点があります。

再利用性の欠如:
名前付きクラスとは異なり、すぐにインスタンス化される匿名クラスは、毎回新しいコンストラクターとプロトタイプを作成します。これは、複数のインスタンスが同じプロトタイプを共有しないことを意味し、クラス継承とプロトタイプ共有の利点が失われます。

シングルトンの誤謬:
このパターンを使用する意図が、シングルトンオブジェクトの場合は失敗します。コンストラクター関数はアクセス可能なままであり、newentity.constructor を使用して複数のインスタンスを作成できます。

絶対に回避する

コンセンサスは明らかです。すぐにインスタンス化される匿名クラスは回避する必要があります。単純なオブジェクト リテラルは、より効率的で直接的な代替手段を提供します。

var entity = {
  name: 'Foo',
  getName: function() { return this.name; }
};

警告: 言語間の考慮事項

新しいクラス パターンは他の一部の言語では受け入れられますが、JavaScript では動作が異なります。 。 JavaScript のクラス作成の動的な性質により、これらの言語が享受できる利点が失われます。

以上がES6 で即座にインスタンス化される匿名クラスは悪い考えですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。