js singleton
6557 ワード
案1:クローズドの2つの役割を利用して、内部の変数を柔軟に読むことができます.
スキーム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