单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。
例1:
function Universe() {
// 判断是否存在实例
if (typeof Universe.instance === 'object') {
return Universe.instance
}
// 其它内容
this.start_time = 0
this.bang = "Big"
// 缓存
Universe.instance = this
// 隐式返回this
}
// 测试
var uni = new Universe()
var uni2 = new Universe()
console.log(uni === uni2) // true
例2:
function Universe() {
// 缓存的实例
var instance = this
// 其它内容
this.start_time = 0
this.bang = "Big"
// 重写构造函数
Universe = function () {
return instance
}
}
// 测试
var uni = new Universe()
var uni2 = new Universe()
uni.bang = "123"
console.log(uni === uni2) // true
console.log(uni2.bang) // 123