几种用JavaScript实现的单例模式(Singleton Design Pattern)

简介: 几种用JavaScript实现的单例模式(Singleton Design Pattern)

</div><div>var Singleton = function() {  </div><div> var attr = 1, fn = function(){ console.log("I am executed in closure");};  </div><div> return {  </div><div>   method : function(){ fn(); },  </div><div>   getAttr : function(){ console.log("will be returned: " + attr ); return attr; }  </div><div> };  </div><div>}();  </div><div>Singleton.method();  </div><div>Singleton.getAttr();  </div><div>var LazySingleton = function(){  </div><div>var attr = 2, fn = function(){ console.log("I am LazySingleton function");};  </div><div>var obj = {  </div><div>method : function(){ fn(); },  </div><div>getAttr : function(){ return attr; }  </div><div>};  </div><div>function init(){  </div><div>return obj;  </div><div>}  </div><div>return { getInstance: init};  </div><div>}();  </div><div>LazySingleton.getInstance().method();  </div><div>console.log("LazySingleton: " + LazySingleton.getInstance().getAttr());  </div><div>function Universe() {</div><div>    if (typeof Universe.instance === 'object') {</div><div>        return Universe.instance;</div><div>    }</div><div>    this.start_time = 0;</div><div>    this.bang = "Big";</div><div>    Universe.instance = this;</div><div>    // return this implicitly</div><div>}</div><div>// test</div><div>var uni = new Universe();</div><div>var uni2 = new Universe();</div><div>console.log(uni === uni2); // true</div><div>function Universe2() {</div><div>    // instance cached</div><div>    var instance = this;</div><div>    this.start_time = 0;</div><div>    this.bang = "Big";</div><div>    Universe2 = function () {</div><div>        return instance;</div><div>    };</div><div>}</div><div>var un1i = new Universe2();</div><div>var un1i2 = new Universe2();</div><div>un1i.bang = "123";</div><div>console.log(un1i === un1i2); // true</div><div>console.log(un1i2.bang); // 123</div><div>var Universe3;</div><div>(function () {</div><div>    var instance;</div><div>    Universe3 = function Universe3() {</div><div>        if (instance) {</div><div>            return instance;</div><div>        }</div><div>        instance = this;</div><div>        this.start_time = 0;</div><div>        this.bang = "Big";</div><div>    };</div><div>} ());</div><div>var a = new Universe3();</div><div>var b = new Universe3();</div><div>alert(a === b); // true</div><div>a.bang = "123";</div><div>alert(b.bang); // 123</div><div>


目录
相关文章
|
9月前
|
设计模式 缓存 JavaScript
JavaScript 的优雅编程技巧:Singleton Pattern
JavaScript 的优雅编程技巧:Singleton Pattern
|
10月前
|
XML Dart JavaScript
JavaScript & React & Ant Design & Flutter & Dart 基础学习笔记 Tree Form 组件通信 封装等
JavaScript & React & Ant Design & Flutter & Dart 基础学习笔记 Tree Form 组件通信 封装等
|
11小时前
|
设计模式 存储 JavaScript
js设计模式之单例模式
js设计模式之单例模式
50 7
|
10月前
|
设计模式 JavaScript 前端开发
|
11月前
|
设计模式 存储 前端开发
使用 JS 快速理解 Container/Presentational Pattern
在现代Web前端开发中,构建可维护、可扩展的应用程序变得越来越重要。为了实现这一目标,开发者需要遵循一些设计模式和最佳实践。其中之一是Container/Presentational(容器/展示)模式,它是一种用于组织和管理前端代码的技术。 本文将深入探讨Container/Presentational模式的概念,介绍如何使用JavaScript实现它,并探讨它在开发中的应用场景、优点和缺点。我们还将介绍一些知名项目中使用到这种模式的实际案例。
152 0
|
11月前
|
缓存 JavaScript
javaScript_单例模式
javaScript_单例模式
39 0
|
设计模式 存储 JavaScript
你不知道的javascript设计模式(五)----单例模式
你不知道的javascript设计模式(五)----单例模式
51 0
|
设计模式 缓存 JavaScript
「设计模式 JavaScript 描述」单例模式
「设计模式 JavaScript 描述」单例模式
|
JavaScript 前端开发
利用JavaScript实现二级联动
利用JavaScript实现二级联动 要实现JavaScript二级联动效果,首先要确定需要哪些技术: 二维数组 for in循环 new Option(text,value,true,true) add(option,null) onchange() 表单事件 HTML代码: &lt;!-- &lt;input type=&quot;text&quot; id=&quot;text&quot;&gt; --&gt; 请选择省份: &lt;select name=&quot;&quot; id=&quot;provinces&quot;&gt; &lt;!-- &lt;option value=&quot;江苏省&quot;&gt;江苏省&lt;/option&gt;
|
JavaScript 前端开发
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
JavaScript函数柯里化的实现原理,进来教你完成一个自己的自动实现柯里化方法
168 0