实现一个单例模式
# 实现一个单例模式
/**
* 单例模式
* 1. 保证一个类只有一个实例,并且全局都能访问它
* 2. 单例好处,可以减少开销,只需要一个实例就能完成的事为啥要创建多个实例!
* 3. vue中的vue-router和vuex的install,都是用了单例模式
*/
// 闭包版
const Singleton = (function () {
let _instance = null;
return function (name, age) {
if (_instance) return _instance;
this.name = name;
this.age = age;
return (_instance = this);
};
})();
const single = new Singleton("da", 18);
console.log(single); // { name: 'da', age: 18 }
const single2 = new Singleton("jj", 28);
console.log(single); // { name: 'da', age: 18 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Singleton {
constructor(name) {
this.name = name
this.instance = null
}
static getInstance(name) {
if (!this.instance) this.instance = new Singleton(name)
return this.instance
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12