JavaScript Singleton Design Pattern
The Singleton
pattern restricts an instantiation of an object to a single instance thus reducing its memory allocation and allowing a "lazy loading" on an as-needed basis. The advantages of that pattern are the reduced memory occupation, single point of access and a postponed initialization which prevents instantiation until it is required. As a disadvantage one may point out that object is hardly ever reset once instantiated and sometimes there might be hidden dependencies.
<script type="text/javascript"> var singleton = ( function(window) { function init() { function action1() { console.log("Action1"); } function action2() { console.log("Action2"); } return { action1 : action1, action2 : action2 }; } if(!window._instance) { window._instance = new init(); } return window._instance; } )( window ); singleton.action1(); // action1 is called singleton.action2(); // action2 is called </script>
Another interesting singleton pattern implementation is the following:
<script type="text/javascript"> var Singleton = function() { if (window._instance) { return window._instance; } this.init(); window._instance = this; }; Singleton.prototype = { init: function() { this.value = 5; }, getValue: function() { return this.value; } }; var singleton = new Singleton(); console.log(singleton.getValue()); </script>