单体模式(单例模式)
- 单体模式就是希望可以在使用方法创建对象的时候,我们无论创建多少次对象都指向同一个。
//非单体模式
//函数
function notSingle(){
return {
a: 1
}
}
var a = notSingle();
var b = notSingle();
console.log(a === b); //false
//构造函数
function notSingle1(){
this.a = 123;
}
var a1 = new notSingle1();
var b1 = new notSingle1();
console.log(a1 === b1); //false
// 单体模式
var _unique = null;
function createSingle(){
var obj = {
a: 1
}
if(_unique === null) {
_unique = obj;
}
return _unique;
}
var a = createSingle();
var b = createSingle();
console.log(a === b);
//上面的方式:因为_unique放在全局,所有不安全
//利用IIFE,创造闭包,把_unique变为私有变量
var createSingle = (function(){
var _unique = null;
function single(){
return {
a:1
}
}
return function(){
if(_unique === null){
_unique = single();
}
return _unique;
}
})();
var a1 = createSingle();
var b1 = createSingle();
console.log(a1 === b1);