ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で静的クラスまたはシングルトン パターンを適切に実装するにはどうすればよいですか?

JavaScript で静的クラスまたはシングルトン パターンを適切に実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 18:45:14957ブラウズ

How Can I Properly Implement a Static Class or Singleton Pattern in JavaScript?

JavaScript の静的関数式を理解する: GameData の場合

JavaScript では、new キーワードを利用する関数式は同じ意味で静的ではありませんC# の対応物として。このアプローチでは、真に静的なクラスを作成するのではなく、コンストラクターのプロパティがリークされ、おそらく意図されていないプロトタイプ オブジェクトが生成されます。

GameData の例の詳細

提供されている例の gameData は、 new キーワードを含む関数式を使用して「クラス」の単一インスタンスを作成する方法を示しています。ただし、コンストラクター プロパティを含めることで、追加オブジェクトのインスタンス化が可能になり、「クラス」が非静的になります。

代替シングルトン アプローチ

真のJavascript のシングルトン パターンについては、次のメソッドを検討してください:

  • Objectリテラル: コンストラクターとプロトタイプのない単純なオブジェクト リテラルを作成します。
  • モジュール パターンを明らかにする: 即時に呼び出される関数式 (IIFE) を使用して、クロージャー スコープの変数を確立し、戻り値を返します。目的のオブジェクト。
  • コンストラクター ("クラス"):呼び出されたときに常に同じシングルトン オブジェクトを返すコンストラクター関数を定義します。

シングルトン パターンの実装

以下のコードは、コンストラクターを使用したシングルトン パターンを示しています。 function:

function GameData() {
    if (this.constructor.singleton)
        return this.constructor.singleton;
    else
        this.constructor.singleton = this;

    // Private and public members initialization
}
GameData.prototype.storageAvailable = function () {
    // Availability check logic
};

var gameData = new GameData();
var gameData2 = new GameData();
console.log(gameData === gameData2 === GameData.singleton); // Outputs true

このアプローチにより、後続のインスタンス化試行では常に同じ GameData が返されることが保証されます。インスタンス、真のシングルトン動作を確立します。

以上がJavaScript で静的クラスまたはシングルトン パターンを適切に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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