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();