javascript设计模式-----单例模式
来源:互联网 发布:在淘宝怎么买充值卡 编辑:程序博客网 时间:2024/06/07 10:31
一、单例模式1 (构造函数的静态属性保存实例)
function Universe(){//如果实例存在则直接返回if(typeof Universe.instance === 'object')){return Universe.instance;)}this.start_time = 0;this.bang = 'big';Universe.instance = this;return this;}//测试var uni = new Universe();var uni2 = new Universe();uni === uni2 //结果为true;
缺点:instance 属性是公开的,可以任意修改
二、单例模式2 (闭包--私有静态成员保存实例--重写构造函数)
function Universe(){//缓存实例var instance = this;this.start_time = 0;this.bang = 'big';//重写构造函数Universe = function(){return instance;};}//测试var uni = new Universe();var uni2 = new Universe();uni === uni2 //结果为true;
缺点:重写构造函数会造成原型的改变,但返回的引用却是旧构造函数对象的引用,导致丢失初始化后添加的扩展,因为没有指向新构造函数对象的引用
改进: (让实例引用指向新构造函数)
function Universe(){//缓存实例var instance ;//重写构造函数Universe = function(){return instance;};//保留原型属性\nUniverse.prototype = this;instance = new Universe();//重置构造函数指针instance.constructor = Universe;//功能this.start_time = 0;this.bang = 'big';}
三、单例模式3( 即时函数,模块模式,私有成员保存实例)
var Universe = (function(){var instance;return function(){if(instance){return instance;}instance = this;//功能this.start_time = 0;this.bang = 'big';}})()
个人推荐此种模式,如果需要扩展,则应自行提供扩展接口
0 0
- Javascript 设计模式 单例
- javascript设计模式----单例模式
- javascript设计模式-----单例模式
- JavaScript设计模式--单例模式
- javascript:设计模式之单例模式
- javascript设计模式--单例模式
- JavaScript设计模式----单例模式
- javascript 设计模式-单例模式
- javascript设计模式-singleton(单例)模式
- JavaScript 设计模式 - 单例模式
- JavaScript设计模式--单例模式
- javascript设计模式初探--单例模式
- JavaScript设计模式-02-单例模式
- 【javascript设计模式】4.单例模式
- JavaScript设计模式--单例模式Singleton
- JavaScript设计模式-单例模式
- JavaScript设计模式-单例模式、模块模式
- javascript设计模式(一)单例模式 策略模式
- 每日算法之二十一:Merge k Sorted Lists
- cocos2dx 2.2版本一下json解析
- atoi
- Fedora 设置打开方式
- 微信公众平台上传多媒体文件-JAVA
- javascript设计模式-----单例模式
- UML 总结
- How to Integrate jVectorMap
- HTTP报文
- warning: #223-D: function "assert_param" declared implicitly
- ios 判断是qq,银行卡,手机号等等公用的方法
- 如何特意制造栈缓冲区溢出?(x86 & ARM)
- IOS 制作证书,推送 , 打包发布
- JVectorMap的使用体会