Pattern: Singleton
Singleton
by rulokc
HTML
<script src="http://amatiasq.com/fiddle-console.js"></script>
JavaScript
// En javascript no hay clases y cada objeto es único por definición
var objSingleton = {id:1};
console.log(objSingleton.id);
// Singleton con propiedades privadas
var privateSingleton = (function() {
var privateProp = 'PRIVATE';
function getPrivateProp() {
return privateProp;
};
return {
id: 2,
publicMethod : function() {
return getPrivateProp();
},
publicVariable: 'PUBLIC'
};
})();
console.log(privateSingleton.publicMethod());
// Singleton on demand
var classSingleton = (function() {
var instance;
function init() {
return {
id: Math.random()
}
};
return {
getInstance: function() {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
var c = classSingleton.getInstance();
var d = classSingleton.getInstance();
console.log(c.id);
console.log(d.id);