设计模式-单例模式

在合适的时候创建,有且只有一个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
let CreatDiv = (function () {
let instance
let CreatDiv = function (html) {
if (instance) {
return instance
}
this.html = html
this.init()
return instance = this
}
CreatDiv.prototype.init = function () {
let div = document.createElement('div')
div.innerHTML = this.html
document.body.appendChild(div)
}
return CreatDiv
})()

let a = new CreatDiv('dom1')
let b = new CreatDiv('dom2')
let c = new CreatDiv('随便什么鬼都可以(&(*^*(&(*&&()(^*')

console.log(a === b && a === c && b === c) // true

以上代码通过IIFE和闭包将instance封装,并返回Singleton的构造方法。简而言之就是判断是否有这个对象,如果没有就创建一个,如果有就直接返回