匿名クラス インスタンスの落とし穴: この JavaScript の落とし穴をいつ、どのように回避するか?

Patricia Arquette
リリース: 2024-10-20 12:34:30
オリジナル
825 人が閲覧しました

Gotcha with Anonymous Class Instances: When and How to Avoid this JavaScript Pitfall?

匿名クラス インスタンス: JavaScript の落とし穴

ES6 では、プログラマーは class キーワードを使用して匿名クラスを定義し、新しい演算子を使用して即座にインスタンス化できます。

<code class="javascript">var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');</code>
ログイン後にコピー

これは便利に見えるかもしれませんが、その根本的な動作と潜在的な欠点を理解することが重要です。

舞台裏

舞台裏では、新しいクラス式は新しいコンストラクターを作成します関数とプロトタイプ オブジェクトが評価されるたびに生成されます。これは、すべてのインスタンス間で共有される単一のコンストラクターとプロトタイプを定義する通常のクラス宣言とは異なります。

注意事項

a。過剰なメモリ消費:

即時インスタンス化では、新しいクラス式を使用してオブジェクトが作成されるたびに、新しいコンストラクターとプロトタイプが作成されます。これにより、特に多数のオブジェクトがインスタンス化される場合、不必要なメモリ消費が発生する可能性があります。

b.継承の欠如:

新しいクラス パターンを使用して作成されたオブジェクトは、親コンストラクターから継承せず、共通のプロトタイプを共有しません。したがって、継承、メソッドの再利用、ポリモーフィズムなどのクラスの利点が失われます。

シングルトン オブジェクトの誤解

一部の開発者はこのパターンを使用してシングルトン オブジェクトを作成することがありますが、効果的ではありません。コンストラクター関数には引き続きアクセスでき、シングルトンの目的に反して新しいentity.constructorを使用して2番目のインスタンスを作成できます。

回避推奨

これらの欠点があるため、使用しないことを強くお勧めします。新しいクラスパターンを使用します。代わりに、単純さ、読みやすさ、インスタンス化の効率を考慮して、従来のオブジェクト リテラルを優先してください:

<code class="javascript">var entity = {
    name: 'Foo',
    getName() { return this.name; }
};</code>
ログイン後にコピー

以上が匿名クラス インスタンスの落とし穴: この JavaScript の落とし穴をいつ、どのように回避するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!