下面记录两种单例模式的实现方式:

第一种,也是比较常见的一种

 1 var Single = function(){
 2     if(typeof Single.instance === "object"){
 3         return Single.instance;
 4     }
 5     Single.instance = this;
 6 };
 7
 8 var i1 = new Single();
 9 var i2 = new Single();
10 alert(i1 === i2);//truealert(typeof(Single.instance));//object

这种方法的缺点是instance是公开的。

第二种,是用闭包的方法,这里用的了函数的自身重写

 1 var Single = function(){
 2     var instance = this;
 3     //一些其他的属性。。。
 4     //自身重写
 5     Single = function(){
 6         return instance;
 7     };
 8 };
 9
10 var i1 = new Single();
11 var i2 = new Single();
12 alert(i1 === i2);  alert(typeof(Single.instance));//undefined

这样instance就不可见了。(完)^_^

参考资料:http://www.slideshare.net/stoyan/javascript-patterns

转载于:https://www.cnblogs.com/yuezk/archive/2012/09/16/2687365.html

JavaScript中单例模式的实现相关推荐

  1. JavaScript中几个重要的知识点(1) ---- 面向对象

    JavaScript中几个最重要的大知识点 面向对象 DOM事件 异步交互ajax 面向对象 在JS中可以把任意的引用和变量都看成是一个对象.面向对象的主要三个表现形式: 封装 继承 多态 1. 封装 ...

  2. JavaScript设计模式——单例模式的理解与应用

    JavaScript设计模式--对单例模式的一些见解 JavaScript设计模式主要分类: ①创建型设计模式,例如单例模式.工厂模式 ②结构型设计模式,例如装饰者模式.适配器模式 ③行为型设计模式, ...

  3. php中不让数组初始化,javascript中数组与php数组初始化差异

    准确来说,javascript中我们需要称之为数组对象,因为数组就是对象,不信你看: var a=[1,2,3]; //竟然会弹出object alert(typeof(a)); 之前学习php的时候 ...

  4. JavaScript 中常见设计模式整理

    开发中,我们或多或少地接触了设计模式,但是很多时候不知道自己使用了哪种设计模式或者说该使用何种设计模式.本文意在梳理常见设计模式的特点,从而对它们有比较清晰的认知. JavaScript 中常见设计模 ...

  5. 中的枚举属性函数_对于 JavaScript 中循环之间的技术差异分析

    在 JavaScript 中使用循环时,需要理解两个关键点:可枚举的属性和可迭代的对象. 可枚举的属性 可枚举对象的一个定义特征是,当通过赋值操作符向对象分配属性时,我们将内部 enumerable ...

  6. JavaScript 中的设计模式

    目录 1. 单例模式 2. 策略模式 3. 代理模式 4. 装饰者模式 5. 组合模式 6. 工厂模式 7. 访问者模式 8. 发布订阅模式 9. 观察者模式 10. 参考链接 设计模式(Design ...

  7. JavaScript中的设计模式

    设计模式是在软件工程领域中广泛使用的一种重要概念.它是指针对特定问题或情况的通用解决方案,通常由经过验证的最佳实践和经验构成.在JavaScript编程中,设计模式同样是一个非常重要的概念.在这篇文章 ...

  8. JavaScript设计模式----单例模式

    声明:这个系列为阅读<JavaScript设计模式与开发实践> --曾探@著一书的读书笔记 1.单例模式的特点和定义 保证一个类仅有一个实例,并且提供一个访问它的全局访问点. 2.传统面向 ...

  9. 理解JavaScript中部分设计模式

    理解JavaScript中部分设计模式 什么是设计模式 在软件工程中,设计模式是软件设计中常见问题可重用的方案.设计模式代表着经验丰富的软件开发人员使用的最佳实践.设计模式可以被认为是编程模板. 为什 ...

  10. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

最新文章

  1. oracle导入sql文件
  2. ASP.NET的票据工具类FormsAuthenticationTicket
  3. 俄罗斯机器人雄鹿_在雄鹿无球可打,在火箭重获新生!哈登,你又让一人打出身价...
  4. 【CentOS Linux 7】实验5【安装VScode,并用VScode编写HTML网页】
  5. 一个程序员的一些想法(二)
  6. 蓝蛇端口扫描器 v2.8.4.724
  7. “微软高管”拯救必应 搞定盖茨成为合伙人?官方打脸:实为开除员工
  8. sm2算法前端处理_Postman接口自动化测试实例用到的完整的SM2前端加密算法代码...
  9. Flink 如何读取和写入 Clickhouse?
  10. java 通过System.getProperties()获取系统参数
  11. [转]MapX 操作总结
  12. 2023年北京航空航天大学材料与化工(金属方向)考研成功经验
  13. 蛋白质性质和结构分析
  14. Spring Cloud深入浅出
  15. sort函数的用法(C++排序库函数的调用)对数组进行排序,在c++中有库函数帮我们实现,这们就不需要我们自己来编程进行排序了。
  16. 批量挖掘SRC思路与实践一
  17. virtualbox kali linux 安装小米随身wifi
  18. STM32硬件SPI通过fm17550读取身份证UID,识别银行卡,识别TYPEA与TYPEB
  19. 数据库基础知识及概念
  20. 韩顺平Java自学笔记 项目 QQ聊天室

热门文章

  1. 批量获取客户端时间偏差
  2. linux文件编程(二)
  3. mysql base64的编码与解码
  4. Linux中解压解压rar文件
  5. mysql云上迁移_MySQL迁移上云最佳实践
  6. Redis 6.0 源码阅读笔记(7) -- ZSet 数据类型源码分析
  7. 计算机组装与维护英语怎么说,计算机组装与维护-复习题(国外英语资料).doc
  8. decode 大于比较 小于_「oracle decode」【ORACLE】Oracle提高篇之DECODE - seo实验室
  9. 设计算法之分治法(补充)
  10. window和document对象