「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ES6 ですぐにインスタンス化される匿名クラスは悪い考えですか?

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

2024 年 11 月 9 日に公開
ブラウズ:776

Are Immediately Instantiated Anonymous Classes in ES6 a Bad Idea?

即時インスタンス化された匿名クラス: 惨事へのレシピ

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

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

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

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

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

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

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

Avoid at All Costs

を使用して複数のインスタンスを作成できます。コンセンサスは明らかです。すぐにインスタンス化される匿名クラスは避けるべきです。単純なオブジェクト リテラルは、より効率的で簡単な代替手段を提供します。

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

警告: 言語間の考慮事項

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

リリースステートメント この記事は次の場所に転載されています: 1729392316 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3