Statische Funktionsausdrücke in Javascript verstehen: Der GameData-Fall
In Javascript sind Funktionsausdrücke, die das Schlüsselwort new verwenden, nicht im gleichen Sinne statisch als ihre C#-Gegenstücke. Anstatt eine wirklich statische Klasse zu erstellen, verliert dieser Ansatz die Konstruktoreigenschaft und generiert ein Prototypobjekt, das wahrscheinlich nicht beabsichtigt ist.
Ein tieferer Einblick in das GameData-Beispiel
Das bereitgestellte Beispiel, gameData, demonstriert die Erstellung einer einzelnen Instanz einer „Klasse“ mithilfe eines Funktionsausdrucks mit dem Schlüsselwort new. Die Einbeziehung der Konstruktoreigenschaft ermöglicht jedoch die Instanziierung zusätzlicher Objekte, wodurch die „Klasse“ nicht statisch wird.
Alternative Singleton-Ansätze
Um eine wahre zu erreichen Um ein Singleton-Muster in Javascript zu erstellen, berücksichtigen Sie die folgenden Methoden:
Implementierung des Singleton-Musters
Der folgende Code veranschaulicht das Singleton-Muster mithilfe einer Konstruktorfunktion:
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
Dieser Ansatz gewährleistet dass nachfolgende Instanziierungsversuche immer dieselbe GameData-Instanz zurückgeben, wodurch ein echtes Singleton-Verhalten entsteht.
Das obige ist der detaillierte Inhalt vonWie kann ich eine statische Klasse oder ein Singleton-Muster ordnungsgemäß in JavaScript implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!