您的位置:首页 > Web前端 > JavaScript

js设计模式之单例模式

2016-07-04 23:31 441 查看
1、单例模式的概念

单例就是保证一个类只有一个实例,实例的方法一般是先判断存在与否,如果

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

js单例模式的两种实现方式,一种是静态的,一种是动态的

2、单例模式的作用

1.模块间通信

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

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

3、注意事项

注意this的使用

闭包容易造成内存泄漏,不需要的赶快干掉

4、代码实现

静态单例的实现方式

<script type="text/javascript">
//1.独立的对象建两个 一个xiaowang 一个xiaoli
//2.让Xiaoli跟xiaowang通过门铃进行通信
//3.先看一下xiaowang家有没有门 如果有门直接通过门铃通信didi 如果没有门 先建门
//4.两个单例之间开始通信
var xiaowang=(function(argument){
var xiaowangjia=function(message){
this.menling=message;
}
var men;

var info={
sendMessge:function(message){
if(men){
men=new xiaowangjia(message);
};
return men;
}
};
return info;
})();
var xiaoli={
callXiaowang:function(msg){
var _xw=xiaowang.sendMessge(msg);
alert(_xw.menling);
_xw=null;
}
};
xiaoli.callXiaowang('didi');

</script>

动态单例的实现方式

<script type="text/javascript">
//页面上6个按钮
//a b c =>top
//d e f=>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.a=6;

}

}

top.init();
banner.init();

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js设计模式