知食记
搜索文档…
单例模式

Class 实现

1
class SingleDog {
2
show() {
3
console.log('我是一个单例对象')
4
}
5
static getInstance() {
6
// 判断是否已经new过1个实例
7
if (!SingleDog.instance) {
8
// 若这个唯一的实例不存在,那么先创建它
9
SingleDog.instance = new SingleDog()
10
}
11
// 如果这个唯一的实例已经存在,则直接返回
12
return SingleDog.instance
13
}
14
}
15
16
const s1 = SingleDog.getInstance()
17
const s2 = SingleDog.getInstance()
18
19
// true
20
s1 === s2
Copied!

闭包实现

1
SingleDog.getInstance = (function() {
2
// 定义自由变量instance,模拟私有变量
3
let instance = null
4
return function() {
5
// 判断自由变量是否为null
6
if(!instance) {
7
// 如果为null则new出唯一实例
8
instance = new SingleDog()
9
}
10
return instance
11
}
12
})()
Copied!
最近更新 1yr ago
复制链接