Singleton JS Example

by Matthew Marcus

JavaScript

function Foo(config){
   var 
       bar = [],
       config = config || null;
    
    this.addBar = function(barInput){
        bar.push(barInput);
    };
    
    this.getBar = function(){
        console.log(config);
        return bar;
    };
}

var Singleton = (function () {
    var 
        obj = null,
        instance;
 
    function createInstance(config) {
        var object = new obj(config);
        return object;
    }
 
    return {
        getInstance: function (config) {
            if (!instance) {
                instance = createInstance(config);
            }
            return instance;
        },
        setObject: function(underlyingObj){
            obj = underlyingObj;
        }
    };
})();

var singlton = Singleton.setObject(Foo);
var foo = Singleton.getInstance({a: 'A'});

var foo2 = Singleton.getInstance();

foo2.addBar('B');

console.log(foo.getBar());