Ovunque ho visto un'implementazione di Singleton in javascript in modo tale:Perché JavaScript Singleton è scritto in questo modo?
var Singleton = (function() {
var instance;
function createInstance() {
var object = new Object("I am the instance");
return object;
}
return {
getInstance: function() {
if (!instance) {
instance = createInstance();
}
return instance;
}
};
})();
Qui possiamo vedere che restituisce una funzione che dobbiamo chiamare al fine di ottenere un oggetto. Domanda: Perché non possiamo semplicemente scrivere in questo modo:
var Singleton = (function() {
function privateMethod() {
...
}
return {
publicMethod1: function() { },
publicMethod2: function() { },
};
})();
Qualcuno dirà che la ragione è per il supporto eredità. Tuttavia, non vedo differenze. Comunque Singleton è un oggetto ora.
Un Singleton deve essere creato una sola volta e restituisce solo un riferimento del Singleton creato. Il tuo Singleton viene creato ogni volta che viene chiamato. – Steffomio
questo è sbagliato, l'implementazione del suo singleton è una funzione valutata automaticamente, che verrà eseguita una sola volta. –
@Regis Portalez: Il tuo diritto!Quindi la differenza è che il primo Singleton viene creato solo quando è davvero necessario e può aumentare un po 'le prestazioni a seconda di quanto sia difficile creare quel Singleton e se è raramente necessario. – Steffomio