理解Javascript 靜態函數表達式:GameData 案例
在Javascript 中,使用new 關鍵字的函數表達式在相同關鍵字意義上不是靜態的作為他們的C# 對應。這種方法不是創建真正的靜態類,而是洩漏建構函數屬性並產生可能不符合預期的原型物件。
深入了解 GameData 範例
提供的範例 gameData 示範了使用具有 new 關鍵字的函數表達式建立「類別」的單一實例。但是,包含建構函數屬性允許實例化其他對象,從而使“類別”非靜態。
替代單例方法
實作真正的Javascript 中的單例模式,請考慮以下方法:
單例模式實作
下面的程式碼使用建構函式說明了單例模式:
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中文網其他相關文章!