Ich folge diesem Link https://addyosmani.com/resources/essentialjsdesignpatterns/book/ Entwurfsmuster in Javascript zu verstehen, habe ich verstanden, Konstruktor Muster, Modulmuster und Modul enthüllt Muster, jetzt in Singleton Muster Ich habe zwei Bedenken, die folgen:Singleton-Entwurfsmuster in Javascript
1) Ich kenne C++ und ich lerne JavaScript jetzt, also verstehe ich Singleton Muster erlaubt Ihnen nur eine Instanz der Klasse, aber in diesem Buch ist es erwähnt "In JavaScript, dienen Singletons als eine gemeinsame Ressource Namespace, die Implementierungscode aus dem globalen Namespace zu isolieren um einen einzigen Zugangspunkt für Funktionen bereitzustellen. " Was heißt das ???
2)
var mySingleton = (function() {
// Instance stores a reference to the Singleton
var instance;
function init() {
// Singleton
// Private methods and variables
function privateMethod(){
console.log("I am private");
}
var privateVariable = "Im also private";
var privateRandomNumber = Math.random();
return {
// Public methods and variables
publicMethod: function() {
console.log("The public can see me!");
},
publicProperty: "I am also public",
getRandomNumber: function() {
return privateRandomNumber;
}
};
};
return {
// Get the Singleton instance if one exists
// or create one if it doesn't
getInstance: function() {
if (!instance) {
instance = init();
}
return instance;
}
};
})();
var singleA = mySingleton.getInstance();
var singleB = mySingleton.getInstance();
Meine Zweifel ist, wenn wir mySingleton.getInstance nennen(); Der Wert "Instanz" ist nicht wieder definiert, da es sich um eine lokale Variable handelt und bei jedem Aufruf der getInstance-Methode der Instanzwert als undefined und damit falls (! instance)
immer passieren sollte und ein neues geben soll Beispiel, aber ich verstehe nicht, wie es hier funktioniert. Bitte erkläre es.
aufgrund zugreifen können. (nicht im Bereich der 'getInstance'-Funktion) –
Mein Rat ist, nachzuschauen, welche Verschlüsse in Javascript sind. –
Danke Punkt 2 ist jetzt klar ... aber was ist mit Punkt Nr. 1? Bitte erklären Sie ... – user3651606