单例模式

javascript 单例模式

闭包实现单例模式,基本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var createSingleInstance = function() {
var instance = null;
return function(fn) {
if (!instance) {
instance = new fn();
}
return instance;
}
}();

function createModal(){
this.name = 1;
}
var fnA = createSingleInstance(createModal);
var fnB = createSingleInstance(createModal);
console.log(fnA === fnB);

惰性单例模式

1
2
3
4
5
6
var getSingle = function (fn) {
var result;
return function () {
return result || ( result = fn.apply(this, arguments) );
}
};