JavaScriptのシングルモデル(singleton in Javascript)

1441 ワード

一例モードの基本構造:
 
  
MyNamespace.Singleton = function() {
return {};
}();
たとえば:
 
  
MyNamespace.Singleton = (function() {
return { // Public members.
publicAttribute1: true,
publicAttribute2: 10,
publicMethod1: function() {
...
},
publicMethod2: function(args) {
...
}
};
})();
しかし、上のSingletonはコードを読み込むとすでに確立されています.どうやってロードを遅らせますか?C〓〓の中でどのように単例を実現するかを想像します:)は次のようなモードを採用します.
 
  
MyNamespace.Singleton = (function() {
function constructor() { // All of the normal singleton code goes here.
...
}
return {
getInstance: function() {
// Control code goes here.
}
}
})();
具体的には、一例を作成するコードをconstructorに入れて、最初に呼び出したときに実行します.
完全なコードは以下の通りです.
 
  
MyNamespace.Singleton = (function() {
var uniqueInstance; // Private attribute that holds the single instance.
function constructor() { // All of the normal singleton code goes here.
...
}
return {
getInstance: function() {
if(!uniqueInstance) { // Instantiate only if the instance doesn't exist.
uniqueInstance = constructor();
}
return uniqueInstance;
}
}
})();