一入前端深似海,从此红尘是路人系列第七弹之孤独的剑客-单例模式
单例模式,它犹如一名孤独的剑客,它是一个只允许被实例化一次的对象。剑客是孤独的,是高傲的,行走江湖仅凭身上一把锋利的利剑,不会多携带任何东西(节省系统资源)。它有一个剑气领域,一个只属于它的空间,别人进不去的空间(命名空间)。
一、剑域-命名空间
我们所知道的,每个剑客高手当其拔剑的时候都会有一个自己的剑域,而踏入者,结果只有一个-死。
当单例模式给我们提供了一个命名空间的时候,它会约束每个人定义的变量,让每个变量都是“孤立”的,使每个人定义的变量不会产生冲突,这样每个人都可以井井有条的管理好自己对象上的属性和方法。
var Qiang = { g : function(id){ return document.getElementById(id); }, css : function(id,key,value){ // 简单的一个样式属性设置 this.g(id).style[key] = value; } }
再者就是模块的分明,实际开发当中也是可以用单例模式进行模块的控制。
qiang.dom.addClass // 添加元素类 qiang.dom.append // 插入元素 qiang.event.stopPropagation // 阻止冒泡 qiang.event.preventDefault // 阻止默认行为 qiang.string.encodeHTML // 将字符串进行html编码
二、十八般武艺-创建小型代码库
每一个优秀的剑客都有自己招式,而每个招式又都是一层一层的心法进行修炼的。
如上代码写到的,我们在创建自己的小型方法代码库的时候也是可以用单例模式来规范我们自己代码库的各个模块。
var Module = { Title : { title_level1 : function(){}, title_level2 : function(){} // ... }, Form : { form_text : function(){}, form_pwd : function(){}, form_select : function(){}, // ... }, Table : { table_normal : function(){}, table_special : function(){} // ... }, // ... }
三、招式模仿-静态变量
优秀的剑客不仅仅有自己的招式,还可以在观看别人的招式后,进行快速的模仿。
我们的JavaScript当中其实是没有static这类的关键字,但很多时候我们又需要这样的一种变量。JavaScript是灵活多变的,访问变量的方式很多种,例如定义在全局中,再就是定义在函数内部,然后在函数内部定义特权方法进行访问。但要求改变量不能被修改,那么全局定义这一种方式肯定是行不通的。那么我们就可以通过定义在函数内部然后在通过特权方法进行访问便可以做到了,具体操作如下:
//管理静态变量 var Conf = (function(){ // 私有变量 var conf = { MAX_NUM:100, MIN_NUM:1, COUNT:1000 } // 返回取值器对象 return { // 取值器方法 get:function(name){ return conf[name] ? conf[name] : null; } } })();
使用方式:
var count = Conf.get('COUNT'); console.log(count); //1000
四、慵懒剑客-惰性单例
剑客是孤独的,也是慵懒的,每个剑客都向往着那种安静的喝着酒,沐浴在懒懒的阳光中。无需拔剑的时候从不拔剑毁了自己片刻的宁静。
包括以上的几种情况,还有一种比较常见的情况便是当单例对象需要做一个延时创建的时候,我们可以通过一种“惰性创建”进行延迟创建。
// 惰性单例 var LazySingle = (function(){ // 单例实例引用 var _instance = null; // 单例 function Single(){ // 这里定义私有属性和方法 return { publicMethod:function(){}, publicProperty:'1.0' } } // 获取单例对象接口 return function(){ // 如果为创建单例将创建单例 if(!_instance){ _instance = Single(); } // 返回单例 return _instance; } })();
单例模式,一名孤独的剑客,行走在JavaScript这样的江湖中,它的地位不容小觑!
原文发布时间为:2016年10月23日
原文作者:qiangdada
本文来源:开源中国 如需转载请联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一入前端深似海,从此红尘是路人系列第四弹之未来前端路该何去何从
一、为什么学下此篇博客? 今天之所以会发这么一篇博客,主要是因为最近横空出世的微信小程序,当然本人也自己玩了一下小程序,发现的确是挺好玩的。但我今天要讲的并不是关于小程序的,而是想透过这个谈谈在这个技术不断发展的时代,我们作为一个IT从业者,一个前端开发该如何抉择,又该何去何从。 二、自我观点 从事前端这个行业一年了,算是一个刚刚入门的小菜鸟吧,现在的我每天的工作重心就是公司前端组件模块的开发及管理。现在还依稀记得当初刚刚参加工作的时候,啥都不用考虑,因为那个时候的自己真的啥都不会,虽然现在会的东西也很少,但是最起码是可以去做选择了。而当你可以对技术,对框架做选择的时候,你就会去想,该选择哪一种技术当成以后自己发展的重心。而伴随着新技术不断的更新换代,对于技术的选择也开始朦胧起来。对于菜鸟,朦胧的可能是选择哪一种技术,对于大神,朦胧的则可能是该开发怎样一种新技术或者新框架才能被这个时代所接受。 就拿我自己前端技能get点来说,学习了angular,jQuery,vue,react,node等等这些目前比较流行的前端框架,感受还是JavaScript最重要。但有时候真的没有必要为了学习框...
- 下一篇
做好前端你需要看这些书
HTML、CSS 类别书籍,都是大同小异,在当当网、卓越网搜索一下很多推荐。如果感觉学的差不多了,可以关注一下《CSS禅意花园》,这个很有影响力。 Javascript 的书籍 推荐看老外写的,国内很多 Javascript 书籍的作者对 Javascript 语言了解的都不是很透彻。 这里推荐几本 Javascript 书籍: 初级读物: 《JavaScript高级程序设计》:一本非常完整的经典入门书籍,被誉为JavaScript圣经之一,详解的非常详细,最新版第三版已经发布了,建议购买。 《JavaScript王者归来》百度的一个Web开发项目经理写的,作为初学者准备的入门级教程也不错。 中级读物: 《JavaScript权威指南》:另外一本JavaScript圣经,讲解的也非常详细,属于中级读物,建议购买。 《JavaScript.The.Good.Parts》:Yahoo大牛,JavaScript精神领袖Douglas Crockford的大作,虽然才100多页,但是字字珠玑啊!强烈建议阅读。 《高性能JavaScript》:《JavaScript高级程序设计》作者Nichol...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境