簡體   English   中英

JavaScript中的單例模式

[英]Singleton pattern in JavaScript

下面是一個非常流行的JavaScript Singleton模式實現的示例:

var mySingleton = (function() {
    var instance;

    function init() {
        function privateMethod() {
            console.log("I am private");
        }
        var privateVariable = "Im also private";
        var privateRandomNumber = Math.random();
        return {
            publicMethod: function() {
                console.log("The public can see me!");
            },
            publicProperty: "I am also public",
            getRandomNumber: function() {
                return privateRandomNumber;
            }
        };
    };

    return {
        getInstance: function() {
            if (!instance) {
                instance = init();
            }
            return instance;
        }
    };
})();

我已經考慮了一段時間,當我們用這個簡單的代碼實現相同的結果時,我並不真正理解這種復雜性的需要:

singleton = (function() {
    var obj = {
        someMethod: function() {}
    }

    return obj;
}());

我在這里俯瞰什么嗎?

是的,在大多數情況下,您不需要這種復雜性,而且只會這樣做

var singleton = {
    someMethod: function() {}
};

但是,具有該getSingleton函數的模式確實有一個優點:該對象僅在調用該函數時(第一次)構建,而不是在實際需要該對象之前構造。 根據對象的復雜程度,這可以提高程序的內存使用和啟動時間。 它基本上是懶加載模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM