💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 单例模式 既创建的对象只会存在一个,如果多次实例化,得到的依然是第一次实例化的对象。 优点是可以节约内存资源。 在js中实现方法是创建标记或者闭包。 ## 示例 ### 示例1 ```js function Base(){ // 判断是否存在实例 if (typeof Base.instance === 'object') { return Base.instance; } this.clients = []; // 连接池池 this.actions = []; // 事件处理 this.middleware = [] // 中间件 this.name = 'base' // 缓存 Base.instance = this; // 隐式返回this } // 使用 var base1 = new Base(); var base2 = new Base(); console.log(base1 instanceof Base); // true console.log(base2 instanceof Base); //true console.log(base2 === base1); // true ``` ### 示例2 ```js var singleton = function( fn ){ var result; return function(){ return result || ( result = fn .apply( this, arguments ) ); } } var createMask = singleton( function(){ return document.body.appendChild( document.createElement('div') ); }) ``` > http://www.alloyteam.com/2012/10/common-javascript-design-patterns/#comments