36 lines
850 B
Markdown
Executable File
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;
|
|
}
|
|
}())
|
|
``` |