实现一个单例模式

# 实现一个单例模式

/**
 * 单例模式
 * 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
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
上次更新: 2022/7/26 下午6:03:32