什么是单例模式,它的基本形式是怎样的?
- 保证一个类只存在一个实例对象
- 先判断实例是否存在,如果存在就直接返回,如果不存在就创建了在返回
- 单例作为一个命名空间的提供者,从全局命名空间里提供唯一的访问点来访问该对象
单例模式的作用?
- 模块间的通信
- 系统中某个类的对象只能存在一个
- 保护自己的属性和方法
使用单例模式应该注意的事项?
- 注意闭包会造成内存泄漏,在使用完成之后应该销毁无用变量
- 注意this关键字的使用
下面是两个简单的单例模式的例子:
<a id="btn" href="javascript:void(0)">按钮</a>
<script>
var getObjColor={
init:function(color){
this.render(color);
this.bind();
}
render:function(color){
var me=this;//存储this对象
me.btn=$("#btn");
if(color){
this.color=color;
}else{
this.color="red";
}
}
bind:function(){
var me=this;
me.btn.click(function(){
me.getColor();
})
}
getColor:function(){
var me=this;
console.log(me.color);
}
}
getObjColor.init("blue");//初始化,每次点击按钮就会打印出blue
</script>
getObjColor是唯一的一个对象,只能通过这个点来访问到该对象,其中的变量和方法都是局部的变量和方法,只能在对象内部被访问