js singleton

6557 ワード

案1:クローズドの2つの役割を利用して、内部の変数を柔軟に読むことができます.
スキーム2:これらの変数を常にメモリに保存することができます.
 
 
   
 
 1   var SingletonTester = (function () { 

 2         //     

 3         function Singleton(args) { 

 4             var args = args || {}; 

 5             this.name = 'SingletonTester'; //

 6             this.pointX = args.pointX || 6; 

 7             this.pointY = args.pointY || 10; 

 8         } 

 9 

10         //     

11         var instance; 

12 

13         //     

14         return { 

15             name: 'SingletonTester', 

16 

17             getInstance: function (args) { 

18                 if (instance === undefined) { 

19                     instance = new Singleton(args); 

20                 } 

21                 return instance; 

22             } 

23         }; 

24     })(); //        

25 

26     //   

27     var test = SingletonTester.getInstance({ pointX: 5 }); 

28     console.log(test.pointX);

29  

30 

31  

32 

33  
 

         
   
 
 1  function Universe() { 

 2       //          

 3       if (typeof Universe.instance === 'object') { 

 4           return Universe.instance; 

 5       } 

 6 

 7       //      

 8       this.start_time = 0; 

 9       this.bang = "Big"; 

10 

11       //    

12       Universe.instance = this; 

13 

14       //     this 

15   } 

16 

17   //    

18   var uni = new Universe(); 

19   var uni2 = new Universe(); 

20   console.log(uni === uni2); // true

21