The Singleton pattern is to ensure there is only one instance of the class that exists. In the case it does exist it returns a reference to that object. This is normally achieved by a method belonging to the class to create an instance.

Singleton in JavaScript is useful to for providing a single point of access to functions which are isolated from the global namespace.

Example are written in ES2015 syntax.

Basic and typical implementation of a Singleton in JavaScript using an object literal:

const aSingleton = {
propA: 'some value',

propB: 3,

someMethod() {
return 'some text';
}

};

Maybe you want to have private fields and functions? These can be encapsulated inside of a closure and return a object literal to expose the public interface.

const aSingleton = () => {
const privateField = 'abc';

function privateFunction(){
return 'some private data ' + privateField;
};

return {
publicMethod() {
return privateFunction();
}
};
};

Another technique is to instantiate the class when it’s needed which can help save on resource:

const ASingleton = (() => {
let isInstance;

function initSingleton() {
return {
aProp: 'with value',
publicMethod() {
return 'something valuable';
}
};
}

return {
getInstance() {
if(!isInstance){
isInstance = initSingleton();
}
return isInstance;
}
};
}());

ASingleton.getInstance().publicMethod();