单体模式(单例模式)
- 单体模式就是希望可以在使用方法创建对象的时候,我们无论创建多少次对象都指向同一个。
//非单体模式//函数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);