ホームページ >ウェブフロントエンド >jsチュートリアル >「new」で作成された JavaScript 関数式は本当に静的ですか?

「new」で作成された JavaScript 関数式は本当に静的ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 19:04:13784ブラウズ

Is a JavaScript Function Expression Created with `new` Truly Static?

JavaScript の関数式と静的動作

JavaScript 関数式で new キーワードを使用する場合、一部の開発者は、結果として得られるキーワードを誤って信じてしまう可能性があります。オブジェクトは静的に動作します。ただし、この仮定は完全に正確であるわけではありません。

new キーワードはオブジェクトの新しいインスタンスを作成し、関数式はそのインスタンスのコンストラクターになります。結果として得られるオブジェクトは、インスタンス化せずにアクセスできるなど、静的な動作を示す可能性がありますが、それでも匿名関数を指すコンストラクター プロパティを持っています。

次の例を考えてみましょう。

var gameData = new function () {
  // ...
};

new キーワードが使用されていても、gameData コンストラクターを使用して追加のオブジェクトをインスタンス化することは可能です:

var gameData2 = new (gameData.constructor)();

これこれは、gameData オブジェクトが実際には静的ではないことを意味します。代わりに、コンストラクターのプロパティが「リーク」され、複数のインスタンスの作成が可能になります。さらに、プロトタイプ オブジェクトが gameData 用に作成されるため、プライベート変数や継承が意図されていない場合、不必要な複雑さが生じる可能性があります。

JavaScript で真のシングルトン オブジェクトを作成するには、オブジェクトなどの別のパターンの使用を検討する必要があります。リテラル、明らかなモジュール パターン、または単一のインスタンス化を強制する専用のコンストラクター関数。

以上が「new」で作成された JavaScript 関数式は本当に静的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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