一、单体模式描述

1、单体模式是javascript中最基本但又最有用的模式之一,他可能比其他任何模式都常用。
2、这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问。通过确保单体对象只存在一份实例,你就可以确信自己的所有代码使用的都是同样的全局资源。

二、单体模式分类

1、简单单体
// 1、简单单体代码var singLeton = {name:'CHX',age:28,sayName:function () {alert('CMX');}}alert(singLeton.name);//CMX//补充:划分命名空间(区分代码)var CHX = {};CHX.singLeton = {name:'CHX',age:28,sayName:function () {alert('CMX');}}CHX.singLeton.sayName();//CMX

2、闭包单体
// 2、闭包单体 闭包的主要目的 保护数据var CHX = {};CHX.singLeton = (function(){//添加自己的私有成员var name = 'CHX';var age = 28;var sayName = function() {alert('CHX');}//把块级作用域里的执行结果赋值类我的单体对象return {name:name,age:age,sayName:sayName}})();CHX.singLeton.sayName();//CMX

3、惰性单体
// 3、惰性单体 和闭包单体有一些相似的地方var CHX = {}; //命名空间CHX.Base = (function(){//私有变量 控制返回的单体对象var uniqInstance; // undinfind// 需要一个构造器 init 初始化单体对象的方法function init() {//添加自己的私有成员var name = 'CHX';var age = 28;var sayName = function() {alert('CHX');}return {name:name,age:age,sayName:sayName};}return {getInstance:function() {if(!uniqInstance) { //实例不存在uniqInstance = init();}return uniqInstance;}}})();//CHX.Base.getInstance().sayName();alert('CHX')//console.log(CHX.Base.getInstance().name);CMX

4、分支单体

// 4、分支单体  主要解决浏览器兼容问题(判断程序的分支,浏览器差异的检测)var CHX = {};var def = false; //到时候动态判断赋值CHX.More = (function(){ var obj1 = {//火狐浏览器 内部的一些配置attr1:'FF属性1'};var obj2 = {//IE浏览器 内部的一些配置attr1:'IE属性1'};return (def)?obj1:obj2;})();alert(CHX.More.attr1);//IE属性1


详细介绍javascript中的单体模式singleton(全面)相关推荐

  1. 单例/单体模式(Singleton)

    单例/单体模式(Singleton) 首先,单例模式是对象的创建模式之一,此外还包括工厂模式.单例模式的三个特点: 1,该类只有一个实例 2,该类自行创建该实例(在该类内部创建自身的实例对象) 3,向 ...

  2. [转]详细介绍java中的数据结构

    详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各 ...

  3. python or的用法_详细介绍Python中and和or实际用法

    and 和 or 的特殊性质 在Python 中,and 和 or 执行布尔逻辑演算,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一.下面来看一下实例.>>> 'a' a ...

  4. 详细介绍MySQL中的数据类型

    MySQL数据类型精讲 1.MySQL中的数据类型 常见数据类型的属性,如下: 2.整数类型 2.1 类型介绍 整数类型一共有 5 种,包括 TINYINT.SMALLINT.MEDIUMINT.IN ...

  5. 39 JavaScript中的严格模式

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.什么是严格模式(strict model) JavaScript除了提供正常模式外,还 ...

  6. 单体模式singleton

    在c++实现单体模式和c#,java有些不同 .h class Param { public:static Param& GetIntance(){return m_param;}static ...

  7. 【转载】 详细介绍Flex中操作XML

    一  在介绍Flex中操作XML之前,首先简单介绍下XML中的基本术语. 元素:XML中拥有开始标签和结束标签的这一块称为"元素"     节点:把XML元素与文本结合起来统称为节 ...

  8. JavaScript中的严格模式

    严格模式 严格模式是JavaScript中的一种限制性更强的变种方式 严格模式可以跟非严格模式共存 目的 首先,在严格模式中将JavaScript陷阱直接报错 其次,修正了一些引擎难以优化的错误:同样 ...

  9. php中sisson用法,详细介绍php中session的用法

    PHP中的session默认情况下是使用客户端的Cookie.当客户端的Cookie被禁用时,会自动通过Query_String来传递. Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个 ...

最新文章

  1. On/Off FlipSwitch 按钮
  2. emwin读取sd图片_262.3MB/S读取速率,雷克沙1667X这回谁还敢吐槽
  3. mysql修改配置文件内存后无法启动_记一次Oracle实例在修改内存大小后无法启动的惊悚经历...
  4. 解决Ubuntu16.04 fatal error: json/json.h: No such file or directory
  5. DEDE文章列表加上序号效果
  6. Watch online
  7. 【51Nod - 1117 】聪明的木匠 (贪心,哈夫曼树,时光倒流)
  8. java对日期Date类进行加减运算、年份加减,月份加减
  9. Android DDMS的打开以及查看手机页面布局层次
  10. mysql point WKB格式 php 解析 unpack
  11. MybatisPlus报错: org.apache.velocity.context.Context(已解决)
  12. 一个有趣的说法:多层神经网络的致命问题与过拟合
  13. MyBatis(二)------使用JDBC编程问题总结
  14. IT6613,是一款BT1120 TO HDMI 单转芯片
  15. ae合成设置快捷键_AE脚本使用快捷键控制关键帧操作 Keyboard v1.2.2【资源分享1449】...
  16. Latex表格排版(三个表格并列、单元格内容自动换行)
  17. JS 0.1+0.2的理解
  18. Laravel项目+Google验证器
  19. wifi动不动就断开_解决iPad连接wifi网络经常中断(转)
  20. 九章算术 九:《勾股》

热门文章

  1. kss admin index.php,XCTF Final 2018 Web Writeup (Bestphp与PUBG详解)
  2. qrcode二维码实现
  3. ptable java_ttable怎么在java中编写
  4. 无线路由器设置成无线AP,解决家里设备不在一个网段的尴尬
  5. 倩女幽魂手游服务器维护多久,倩女幽魂手游11月22日在线维护公告
  6. 程序员漫画集连载[1]
  7. kafka扩容数据自动重分配脚本
  8. Hanselminutes播客242-与Pete Brown的远程工作者的困境
  9. R语言使用vtreat包的designTreatmentsC函数构建数据处理计划(treatment plan)、使用vtreat包进行数据准备
  10. android studio天气预报