一、单例模式概念解读

1.单例模式概念文字解读

单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。在JavaScript里,单例作为一个命名空间提供者,从全局命名空间里提供一个唯一的访问点来访问该对象。

2.单例模式概念拟物化解读

买房子要先确认是否有门,没有要联系开发商创建。其次,每一个门都有自己的归属,301归属小王,302归属小李,小王小李属于命名空间,但是一栋楼里有多个小王小李,这些全局命名空间里301只归属于一个小王,即,提供一个唯一的访问点来访问该对象。

二、单例模式的作用和注意事项

模式作用:

1.模块间通信。

2.系统中某个类的对象只能存在一个。

3.保护自己的属性和方法。

注意事项:

1.注意this 的使用(谁调用,指向谁)。

2.闭包容易造成内存泄漏,不需要的赶快删掉。

3.注意new 的成本。(继承)

三、单例模式的代码实战和总结

1.一个通俗的例子

<script type="text/javascript">
//1.独立的对象,建立2个,一个xiaowang,一个xiaoli
//2.让xiaoli和xiaowang 通过门铃进行通信
//3.先看一下xiaowang家有没有门,如果有门,直接通过门铃通迅(按didi),如果没有则建门
//4.两个单例之间开始通信 var xiaowang = (function(argument){
this.doorRing=message;
};
var door;
var info = {
sengMessage:function(message){
if (!door) {
door=new xiaowangjia(message); //这个单例用的时候才new ,注意new 的成本
};
return door;
}
};
return info;
})(); var xiaoli = {
callXiaowang:function(msg){
var _xw = xiaowang.sengMessage(msg);
alert(_xw.doorRing);
_xw = null; //用完了,要把xiaowangjia置成空。等待垃圾回收,闭包问题
}
};
xiaoli.callXiaowang('didi'); //xiaoli 通过按didi发起通信请求
</script>

2.平时开发的例子

<script type="text/javascript">
//页面上有6个按钮:a,b,c,d,e,f
//a,b,c => top 归属到top命名空间
//d,e,f => banner 归属到banner命名空间
var top={
init:function(){
this.render();
this.bind();
},
a:4,
render:function(){
var me = this;
me.btna=$('#a');
},
bind:function(){
var me = this;
me.btna.click(function(){
//业务逻辑取出去
me.test();
});
},
test:function(){
a =5;
}
} var banner={
init:function(){
this.render();
this.bind();
},
a:4,
render:function(){
var me = this;
me.btna=$('#d');
},
bind:function(){
var me = this;
me.btna.click(function(){
//业务逻辑取出去
me.test();
});
},
test:function(){
a =6;
}
} top.init();
banner.init(); //使用jQuery 绑定事件
$('#a').click(function(){
//执行逻辑
});
$('#b').click(function(){
//执行逻辑
});
$('#c').click(function(){
//执行逻辑
});
$('#d').click(function(){
//执行逻辑
});
$('#e').click(function(){
//执行逻辑
});
$('#f').click(function(){
//执行逻辑
});
</script>

JavaScript 设计模式之单例模式的更多相关文章

  1. JavaScript设计模式之单例模式【惰性单例】

    在提高开发水平,往中高级前端工程师中,利用设计模式是必不可少的一条道路.掌握设计模式的思想远远比硬套重要,因为设计模式是一种思想,不局限于开发语言.但实际上由于语言的特性不同,往往在实现的时候会有不少 ...

  2. JavaScript设计模式_01_单例模式

    最近项目不太忙,难得有时间看看书,平时挺喜欢js这门语言.也看过很多高级教程,觉得自己还是比较热衷于js的设计模式.这一次重温一下<JavaScript设计模式与开发实践>,开篇为单例模式 ...

  3. 再起航,我的学习笔记之JavaScript设计模式10(单例模式)

    单例模式 单例模式(Singleton) : 又被称为单体模式,是只允许实例化一次的对象类.一个类有且仅有一个实例,并且自行实例化向整个系统提供. 命名空间 单例模式可能是JavaScript中我们最 ...

  4. [JavaScript设计模式]惰性单例模式

    惰性单例模式 之前介绍了JS中类的单例模式,这次我们讨论下单例模式的应用.在众多网站中,登录框的实现方式就是一个单例,点击一次就展示一次,所以我们可以在页面加载好的时候就创建一个登录框,点击页面上的登 ...

  5. JavaScript设计模式,单例模式!

    单例设计模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点.有些对象只需要一个,这时可用单例模式. 传统的单例模式 和new 创建对象的调用不一样 调用者要调用xxx.getInstance ...

  6. 第一章 --- 关于Javascript 设计模式 之 单例模式

    首先我们对单例模式先进行理论上的讲解,接下来,我们再通过具体的代码示例,来讲解,这个单例模式的使用场景和这种模式的优缺点 (这个系列的所有关于设计模式的都是面向Javascript) 一.理论定义: ...

  7. JavaScript设计模式之单例模式

    一.单例模式概念 单例就是保证一个类只有一个实例,实现方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例作为一个 ...

  8. 「设计模式」JavaScript - 设计模式之单例模式与场景实践

    单例介绍 上次总结了设计模式中的module模式,可能没有真真正正的使用在场景中,发现效果并不好,想要使用起来却不那么得心应手, 所以这次我打算换一种方式~~从简单的场景中来看单例模式, 因为Java ...

  9. JavaScript设计模式-7.单例模式

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. [Android Pro] Android源码编译后,再重编译所需要做的清理工作

    1.在源码目录的根目录下,make clean; 2.进到源码的\linux\kernel\目录下,执行make mrproper: 3.再退回到根目录,执行source  build/envsetu ...

  2. 10 Big Data Possibilities for 2017 Based on Oracle's Predictions

    2017 will see a host of informed predictions, lower costs, and even business-centric gains, courtesy ...

  3. 【BZOJ】【2730】【HNOI2012】矿场搭建

    Tarjan求BCC/割点 然而似乎我一开始抄的白书的板子哪里抄错了?还是本身哪里不对……(可能是不适用于这道题?因为这题要求求出每个BCC的大小..? 膜拜了ydc的写法= = 其实两次dfs也并没 ...

  4. Servlet监听器统计在线人数

    监听器的作用是监听Web容器的有效事件,它由Servlet容器管理,利用Listener接口监听某个执行程序,并根据该程序的需求做出适应的响应. 例1 应用Servlet监听器统计在线人数. (1)创 ...

  5. 第六章 JVM垃圾收集器(2)

    上一章记录了几种常见的垃圾收集器,见<第五章 JVM垃圾收集器(1)> 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS是并发清除 ...

  6. 网站流量分析指标-PV/UV/PR/IP

    网站数据分析,经常会统计一个页面或者一个网站或者其他情况的PV/UV.下面简单说一下,这些量PV/UV/PR/IP. 1.PV PV(page view),即页面浏览量,或点击量.通常是衡量一个网络新 ...

  7. Android中的树状(tree)列表

    树状列表前端挺常用的,还有人专门写过Ztree,Android中有的时候也需要使用到树状列表,上篇文章写了一下ExpandableListView,ExpandableListView最多支持两级结构 ...

  8. Maven Dependencies没有了的解决办法

    头疼的问题,maven Dependencies突然没有了,别的项目都有,个别的却怎么也出不来.  以下是某大神的解决方法,特此转发,以防丢失: 网上搜索了一番,大多都是下面这种做法: 右击 Mave ...

  9. IOS调试—断点调试以及动态输出

    在开发App的过程中,需要反复的修改和优化我们的代码,特别是当程序出现bug,需要快速的找出错误的原因,进行修改,以保证程序的正确执行. 断点调试,是最常用最简单的一种调试方式,可以一步步跟踪程序执行 ...

  10. 关于PHP写的投票网站之刷票终结版

    告诉大家一个坏消息,还是有刷票的行为,有图有真相: 倒数第三项是时间轴,倒数第二项是IP,倒数第一项是邮箱,你们要刷票,拦都拦不住呀呀呀呀呀呀!!!!! 看看这些时间的间隔,看看这些IP的地址,哎,再 ...