2025-03-29 14:35:49 +08:00

36 lines
850 B
Markdown
Executable File

# 单例模式
> **定义**:**单例模式指的是保证一个类仅有一个实例,且提供一个访问它的全局访问点**。全局缓存,`window`对象,都可以看作是一个单例。
**目的: 解决一个全局使用的类频繁地创建与销毁**
#### 使用ES6 class 创建单例:
```javascript
class Instance {
static init () {
if (!this.instance) {
this.instance = new Instance()
}
return this.instance;
}
}
const instance1 = Instance.init()
const instance2 = Instance.init()
console.log(instance1 === instance2) //true
```
#### 使用闭包创建单例:
```javascript
const instance = (function() {
let instance = null;
return function(name) {
if (!instance) {
instance = new Singleton(name)
}
return instance;
}
}())
```