JavaScript Lazy Singleton
HTML
<div id="console"></div>
JavaScript
function log(msg){
document.getElementById('console').innerHTML+=msg+'<br />';
}
var LazySingleton = function(){
var val = 1, _instance;
var lazy_init = function(){
log('Lazy init, exec no more than once.');
return {
getVal : function(){ return val; },
setVal : function(v){ val = v; }
};
};
var init = function(){
init = function(){ return _instance; };
return _instance = lazy_init();
};
return {
getInstance : function(){ return init(); }
};
}();
log('load before lazy init.');
log(LazySingleton.getInstance().getVal()); // will exec lazy init