1 function Singleton(){ 2 if(!Singleton.a){ 3 Singleton.a={}; 4 } 5 return Singleton.a; 6 }
运行结果:
单例模式: 保证一个类只有一个实例,一般先判断实例是否存在,如果存在直接返回,不存在则先创建再返回,这样就可以保证一个类只有一个实例对象。
作用: (1)、保证某个类的对象的唯一性; (2)、模块间通信; (3)、防止变量污染
应用场景: 对象往往仅需要一个的时候 (1)、windows的任务管理器 (2)、多线程的线程池设计 (3)、全局缓存 (4)、浏览器的window对象 (5)、登录页面中的浮窗,无论点击多少次,浮窗仅仅会被创建一次,那么这个button应该使用 单例模式来进行创建。
先实现一个简单的:
let mySingleton = (function() { let instance; function mySingleton(params) { instance = instance || ( this instanceof mySingleton ? this : new mySingleton(params) ) instance.init(params); return instance; } mySingleton.prototype.init = function(params) { this.params = params; }; return mySingleton; })();
1 function Singleton(){ 2 if(!Singleton.a){ 3 Singleton.a={}; 4 } 5 return Singleton.a; 6 }
运行结果:
转载于:https://www.cnblogs.com/liuliang-wifi/p/6837496.html
js实现单例模式
实现代码:
1 var single=function(name){ 2 this.name=name; 3 } 4 var proxy=(function(){ 5 var instance; 6 return function(name){ 7 if(!instance){ 8 instance= new single(name); 9 } 10 return instance; 11 } 12 })(); 13 14 var a=new proxy("first"); 15 var b=new proxy("second"); 16 17 console.log(a==b);结果 当然是true
a.name='first'
b.name='first'
转载于:https://www.cnblogs.com/carsonwuu/p/7768107.html
js实现单例设计模式
// js手写单例设计模式 var Singleton = (function(){ var instance = null; function Singleton(name){ this.name = name; } return function(name){ if(!instance){ instance = new Singleton(name); } return instance; } })() var a = new Singleton("张三"); var b = new Singleton("李四"); console.log(a.name); console.log(b.name);