ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 関数式での「new」は静的な動作を作成しますか?
「new」を使用した関数式 キーワード: 静的な性質を明らかにする
JavaScript で、「new」を使用した関数式の動作を理解するキーワードが重要です。次のコードを考えてみましょう:
var gameData = new function () { // Function expressions require no constructor this.storageAvailable = function () { ... }; };
この場合の 'new' キーワードはインスタンス化を意味したり、複数のインスタンスの作成を許可したりするものではないことに注意することが重要です。代わりに、単に関数式を実行し、結果の匿名オブジェクトを 'gameData' 変数に割り当てます。
静的動作の誤解
における静的動作の概念C# は、JavaScript の関数式も静的に動作するという誤解を招く可能性があります。しかし、これは不正確です。ここでの 'new' キーワードは 2 番目のオブジェクトの作成を妨げません:
var gameData2 = new (gameData.constructor)(); // Reinstantiation is possible
さらに、関数式には匿名関数を指すコンストラクター プロパティがまだあり、これには 'gameData.constructor を使用してアクセスできます。 '。これは、真の静的クラスの目的を無効にします。
静的動作の代替手段
単一のインスタンス化できないオブジェクトを作成することが目的の場合、より適切な動作があります。 'new':
結論として、JavaScript の 'new' キーワードを含む関数式は次のようになります。複数回インスタンス化でき、「gameData.constructor」を通じてアクセスできるパブリック コンストラクター プロパティを持つため、静的な動作は示されません。真の静的な動作を実現するには、オブジェクト リテラル、モジュール パターン、シングルトン パターンの公開などの代替アプローチの採用を検討してください。
以上がJavaScript 関数式での「new」は静的な動作を作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。