Singleton JavaScript Pattern

One of the more popular JavaScript patterns is the singleton. The singleton pattern can be very simple to implement, but can take on many different forms which will be shown below.

When should I use the singleton pattern?

The singleton pattern perfect for when you only need a single instance of an object. The functionality should never be altered when you create new instances of that object. If you need to change functionality after instantiation, then you should choose a different JavaScript design pattern.

Singleton pattern is good for:

  • When you need an object with only one instance
  • Namespacing
  • Reducing global resources
  • Organizing code
  • Maintenance
  • Handling AJAX requests

Basic implementations:

Above is the simplest form of the singleton pattern. There is no need to instantiate using the new operator as this is an object literal. As you can see, the object literal contains both properties and methods and a variable to access the object. We can take this a step further and build a singleton with both public and private members.

Here we have private properties and methods that are only accessible within the function and are not available outside the function. We then return an object literal with public properties and methods, which are accessible outside the function using dot notation (ex: Namespace.publicMethod1() or Namespace.publicProperty2).

Cool Stuff

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum dui nibh, congue sed molestie non, tincidunt bibendum urna. Nullam in elit lorem, eget placerat erat. Etiam egestas enim non lacus tempus nec fringilla dolor ultrices. Nulla non risus vel lorem porta molestie. Mauris condimentum ullamcorper augue nec blandit. Sed quis elit sem. Suspendisse dapibus purus non risus tempor vel faucibus neque semper. Nam congue nisi ac lacus sodales a malesuada ligula suscipit. Aliquam sollicitudin urna et dolor varius consequat. Praesent laoreet lectus ornare metus commodo eu interdum nisl consequat. Praesent purus purus, scelerisque vel varius a, porttitor id metus.

In hac habitasse platea dictumst. Sed a dignissim velit. Nulla quis justo et mi blandit facilisis. Integer facilisis tempor metus vel suscipit. Proin semper massa ac dui gravida eu congue odio mattis. Phasellus nulla arcu, tincidunt id hendrerit eu, fringilla at enim. Praesent vestibulum, tellus at mollis aliquet, arcu ante dictum justo, ut suscipit justo est nec justo. Duis posuere augue id ante malesuada faucibus. Sed consequat vehicula dignissim. Nulla tempus malesuada adipiscing. Duis lacinia egestas dui a accumsan. Nullam quis lacus vel lectus posuere convallis at id felis. Donec ultricies leo eu quam iaculis fringilla condimentum imperdiet ante.

Morbi tempor, est a sodales tincidunt, lectus purus tempor nisi, sit amet pretium orci sapien a turpis. Aliquam erat volutpat. Mauris suscipit, odio nec aliquam dictum, odio odio bibendum ante, eleifend rutrum libero erat sed turpis. Quisque a odio nec risus pretium suscipit eget nec urna. Aenean non quam dolor, vel pellentesque nisi. Donec leo ante, blandit vel aliquet et, tempus non enim. Nunc sed risus erat. Fusce at mi condimentum lectus cursus fringilla. Ut feugiat, mi at tincidunt varius, nibh leo vehicula enim, at vehicula orci diam et ipsum. Curabitur ornare, neque ut cursus auctor, justo neque pharetra enim, eget eleifend dui sapien quis tellus.

Nunc commodo dapibus iaculis. Morbi est nibh, egestas ut commodo at, faucibus vel nulla. Pellentesque iaculis vestibulum sodales. Suspendisse vehicula aliquam enim, sed volutpat nisl ultrices vel. Mauris sollicitudin euismod turpis, a aliquam est porta at. Mauris vulputate, dolor quis vestibulum sagittis, diam ligula aliquam lacus, non lobortis justo mauris ac metus. Nunc at metus quis dui elementum iaculis. Suspendisse lectus risus, sodales a lacinia id, adipiscing et dui. Duis non risus velit, aliquam congue arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec laoreet neque ut velit consectetur fringilla sollicitudin ipsum viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In eget nisi at purus facilisis faucibus non eu ligula. Mauris tristique pulvinar massa, iaculis iaculis lacus sodales at. Morbi ac nulla ipsum. Fusce vehicula augue vitae est auctor quis congue metus aliquet.

Vestibulum sit amet bibendum enim. Aenean mollis nibh quam, sit amet tincidunt nulla. Nullam ut pellentesque tellus. Nunc eu eros ornare orci venenatis iaculis sit amet ut arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed vulputate metus non tellus facilisis sed cursus neque vehicula. Curabitur mauris augue, pharetra et facilisis et, vestibulum et risus. Vivamus in erat eget urna ultricies malesuada. Proin eu dui eget tortor congue ornare. Sed sit amet egestas elit. Ut ut libero nulla. Donec leo enim, scelerisque vel sollicitudin quis, sagittis quis dui.

HTML5 Rocks!

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum dui nibh, congue sed molestie non, tincidunt bibendum urna. Nullam in elit lorem, eget placerat erat. Etiam egestas enim non lacus tempus nec fringilla dolor ultrices. Nulla non risus vel lorem porta molestie. Mauris condimentum ullamcorper augue nec blandit. Sed quis elit sem. Suspendisse dapibus purus non risus tempor vel faucibus neque semper. Nam congue nisi ac lacus sodales a malesuada ligula suscipit. Aliquam sollicitudin urna et dolor varius consequat. Praesent laoreet lectus ornare metus commodo eu interdum nisl consequat. Praesent purus purus, scelerisque vel varius a, porttitor id metus.

In hac habitasse platea dictumst. Sed a dignissim velit. Nulla quis justo et mi blandit facilisis. Integer facilisis tempor metus vel suscipit. Proin semper massa ac dui gravida eu congue odio mattis. Phasellus nulla arcu, tincidunt id hendrerit eu, fringilla at enim. Praesent vestibulum, tellus at mollis aliquet, arcu ante dictum justo, ut suscipit justo est nec justo. Duis posuere augue id ante malesuada faucibus. Sed consequat vehicula dignissim. Nulla tempus malesuada adipiscing. Duis lacinia egestas dui a accumsan. Nullam quis lacus vel lectus posuere convallis at id felis. Donec ultricies leo eu quam iaculis fringilla condimentum imperdiet ante.

Morbi tempor, est a sodales tincidunt, lectus purus tempor nisi, sit amet pretium orci sapien a turpis. Aliquam erat volutpat. Mauris suscipit, odio nec aliquam dictum, odio odio bibendum ante, eleifend rutrum libero erat sed turpis. Quisque a odio nec risus pretium suscipit eget nec urna. Aenean non quam dolor, vel pellentesque nisi. Donec leo ante, blandit vel aliquet et, tempus non enim. Nunc sed risus erat. Fusce at mi condimentum lectus cursus fringilla. Ut feugiat, mi at tincidunt varius, nibh leo vehicula enim, at vehicula orci diam et ipsum. Curabitur ornare, neque ut cursus auctor, justo neque pharetra enim, eget eleifend dui sapien quis tellus.

Nunc commodo dapibus iaculis. Morbi est nibh, egestas ut commodo at, faucibus vel nulla. Pellentesque iaculis vestibulum sodales. Suspendisse vehicula aliquam enim, sed volutpat nisl ultrices vel. Mauris sollicitudin euismod turpis, a aliquam est porta at. Mauris vulputate, dolor quis vestibulum sagittis, diam ligula aliquam lacus, non lobortis justo mauris ac metus. Nunc at metus quis dui elementum iaculis. Suspendisse lectus risus, sodales a lacinia id, adipiscing et dui. Duis non risus velit, aliquam congue arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec laoreet neque ut velit consectetur fringilla sollicitudin ipsum viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In eget nisi at purus facilisis faucibus non eu ligula. Mauris tristique pulvinar massa, iaculis iaculis lacus sodales at. Morbi ac nulla ipsum. Fusce vehicula augue vitae est auctor quis congue metus aliquet.

Vestibulum sit amet bibendum enim. Aenean mollis nibh quam, sit amet tincidunt nulla. Nullam ut pellentesque tellus. Nunc eu eros ornare orci venenatis iaculis sit amet ut arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed vulputate metus non tellus facilisis sed cursus neque vehicula. Curabitur mauris augue, pharetra et facilisis et, vestibulum et risus. Vivamus in erat eget urna ultricies malesuada. Proin eu dui eget tortor congue ornare. Sed sit amet egestas elit. Ut ut libero nulla. Donec leo enim, scelerisque vel sollicitudin quis, sagittis quis dui.

Post About Python

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum dui nibh, congue sed molestie non, tincidunt bibendum urna. Nullam in elit lorem, eget placerat erat. Etiam egestas enim non lacus tempus nec fringilla dolor ultrices. Nulla non risus vel lorem porta molestie. Mauris condimentum ullamcorper augue nec blandit. Sed quis elit sem. Suspendisse dapibus purus non risus tempor vel faucibus neque semper. Nam congue nisi ac lacus sodales a malesuada ligula suscipit. Aliquam sollicitudin urna et dolor varius consequat. Praesent laoreet lectus ornare metus commodo eu interdum nisl consequat. Praesent purus purus, scelerisque vel varius a, porttitor id metus.

In hac habitasse platea dictumst. Sed a dignissim velit. Nulla quis justo et mi blandit facilisis. Integer facilisis tempor metus vel suscipit. Proin semper massa ac dui gravida eu congue odio mattis. Phasellus nulla arcu, tincidunt id hendrerit eu, fringilla at enim. Praesent vestibulum, tellus at mollis aliquet, arcu ante dictum justo, ut suscipit justo est nec justo. Duis posuere augue id ante malesuada faucibus. Sed consequat vehicula dignissim. Nulla tempus malesuada adipiscing. Duis lacinia egestas dui a accumsan. Nullam quis lacus vel lectus posuere convallis at id felis. Donec ultricies leo eu quam iaculis fringilla condimentum imperdiet ante.

Morbi tempor, est a sodales tincidunt, lectus purus tempor nisi, sit amet pretium orci sapien a turpis. Aliquam erat volutpat. Mauris suscipit, odio nec aliquam dictum, odio odio bibendum ante, eleifend rutrum libero erat sed turpis. Quisque a odio nec risus pretium suscipit eget nec urna. Aenean non quam dolor, vel pellentesque nisi. Donec leo ante, blandit vel aliquet et, tempus non enim. Nunc sed risus erat. Fusce at mi condimentum lectus cursus fringilla. Ut feugiat, mi at tincidunt varius, nibh leo vehicula enim, at vehicula orci diam et ipsum. Curabitur ornare, neque ut cursus auctor, justo neque pharetra enim, eget eleifend dui sapien quis tellus.

Nunc commodo dapibus iaculis. Morbi est nibh, egestas ut commodo at, faucibus vel nulla. Pellentesque iaculis vestibulum sodales. Suspendisse vehicula aliquam enim, sed volutpat nisl ultrices vel. Mauris sollicitudin euismod turpis, a aliquam est porta at. Mauris vulputate, dolor quis vestibulum sagittis, diam ligula aliquam lacus, non lobortis justo mauris ac metus. Nunc at metus quis dui elementum iaculis. Suspendisse lectus risus, sodales a lacinia id, adipiscing et dui. Duis non risus velit, aliquam congue arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec laoreet neque ut velit consectetur fringilla sollicitudin ipsum viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In eget nisi at purus facilisis faucibus non eu ligula. Mauris tristique pulvinar massa, iaculis iaculis lacus sodales at. Morbi ac nulla ipsum. Fusce vehicula augue vitae est auctor quis congue metus aliquet.

Vestibulum sit amet bibendum enim. Aenean mollis nibh quam, sit amet tincidunt nulla. Nullam ut pellentesque tellus. Nunc eu eros ornare orci venenatis iaculis sit amet ut arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed vulputate metus non tellus facilisis sed cursus neque vehicula. Curabitur mauris augue, pharetra et facilisis et, vestibulum et risus. Vivamus in erat eget urna ultricies malesuada. Proin eu dui eget tortor congue ornare. Sed sit amet egestas elit. Ut ut libero nulla. Donec leo enim, scelerisque vel sollicitudin quis, sagittis quis dui.

Test Post About Backbone.js

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum dui nibh, congue sed molestie non, tincidunt bibendum urna. Nullam in elit lorem, eget placerat erat. Etiam egestas enim non lacus tempus nec fringilla dolor ultrices. Nulla non risus vel lorem porta molestie. Mauris condimentum ullamcorper augue nec blandit. Sed quis elit sem. Suspendisse dapibus purus non risus tempor vel faucibus neque semper. Nam congue nisi ac lacus sodales a malesuada ligula suscipit. Aliquam sollicitudin urna et dolor varius consequat. Praesent laoreet lectus ornare metus commodo eu interdum nisl consequat. Praesent purus purus, scelerisque vel varius a, porttitor id metus.

In hac habitasse platea dictumst. Sed a dignissim velit. Nulla quis justo et mi blandit facilisis. Integer facilisis tempor metus vel suscipit. Proin semper massa ac dui gravida eu congue odio mattis. Phasellus nulla arcu, tincidunt id hendrerit eu, fringilla at enim. Praesent vestibulum, tellus at mollis aliquet, arcu ante dictum justo, ut suscipit justo est nec justo. Duis posuere augue id ante malesuada faucibus. Sed consequat vehicula dignissim. Nulla tempus malesuada adipiscing. Duis lacinia egestas dui a accumsan. Nullam quis lacus vel lectus posuere convallis at id felis. Donec ultricies leo eu quam iaculis fringilla condimentum imperdiet ante.

Morbi tempor, est a sodales tincidunt, lectus purus tempor nisi, sit amet pretium orci sapien a turpis. Aliquam erat volutpat. Mauris suscipit, odio nec aliquam dictum, odio odio bibendum ante, eleifend rutrum libero erat sed turpis. Quisque a odio nec risus pretium suscipit eget nec urna. Aenean non quam dolor, vel pellentesque nisi. Donec leo ante, blandit vel aliquet et, tempus non enim. Nunc sed risus erat. Fusce at mi condimentum lectus cursus fringilla. Ut feugiat, mi at tincidunt varius, nibh leo vehicula enim, at vehicula orci diam et ipsum. Curabitur ornare, neque ut cursus auctor, justo neque pharetra enim, eget eleifend dui sapien quis tellus.

Nunc commodo dapibus iaculis. Morbi est nibh, egestas ut commodo at, faucibus vel nulla. Pellentesque iaculis vestibulum sodales. Suspendisse vehicula aliquam enim, sed volutpat nisl ultrices vel. Mauris sollicitudin euismod turpis, a aliquam est porta at. Mauris vulputate, dolor quis vestibulum sagittis, diam ligula aliquam lacus, non lobortis justo mauris ac metus. Nunc at metus quis dui elementum iaculis. Suspendisse lectus risus, sodales a lacinia id, adipiscing et dui. Duis non risus velit, aliquam congue arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec laoreet neque ut velit consectetur fringilla sollicitudin ipsum viverra. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In eget nisi at purus facilisis faucibus non eu ligula. Mauris tristique pulvinar massa, iaculis iaculis lacus sodales at. Morbi ac nulla ipsum. Fusce vehicula augue vitae est auctor quis congue metus aliquet.

Vestibulum sit amet bibendum enim. Aenean mollis nibh quam, sit amet tincidunt nulla. Nullam ut pellentesque tellus. Nunc eu eros ornare orci venenatis iaculis sit amet ut arcu. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed vulputate metus non tellus facilisis sed cursus neque vehicula. Curabitur mauris augue, pharetra et facilisis et, vestibulum et risus. Vivamus in erat eget urna ultricies malesuada. Proin eu dui eget tortor congue ornare. Sed sit amet egestas elit. Ut ut libero nulla. Donec leo enim, scelerisque vel sollicitudin quis, sagittis quis dui.