单例要求一个类有且只有一个实例
最简单的单例
var singleton = {
attr : 1,
method : function(){ return this.attr; }
}
var t1 = singleton ;
var t2 = singleton ;
t1 === t2 。
构造函数内部判断
var Singleton = function(name) {
this.name = name;
this.instance = null;
}
Singleton.getInstance = function(name) {
if(!this.instance) {
this.instance = new Singleton(name);
}
return this.instance;
}
var a = Singleton.getInstance('sven1');
var b = Singleton.getInstance('sven2');
// 指向的是唯一实例化的对象
console.log(a === b);
es6
class Singleton {
constructor(name) {
this.name = name;
this.instance = null;
}
// 构造一个广为人知的接口,供用户对该类进行实例化
static getInstance(name) {
if(!this.instance) {
this.instance = new Singleton(name);
}
return this.instance;
}
}