javascript 设计模式之观察者模式
16lz
2021-01-22
var EventsListener=function(){
var uniqid=-1,obj={};
//添加监听
var listen=function(key,fn){
obj[key]?'':obj[key]=[];
var tagid=(++uniqid).toString();
obj[key].push({
id:tagid,
fn:fn
});
return tagid;
};
//发布
var publish=function(){
var key=Array.prototype.shift.call(arguments);
if(obj[key]&&obj[key].length){
for(var i=0;i<obj[key].length;i++){
var isBreak=obj[key][i].fn.apply(this,arguments);
if(isBreak===false){
return false;
}
}
}else{
alert("没有监听到需要发布的对象,请核对后再次发布!!!")
}
};
//删除单个的监听
var removeone=function(token){
for(var kindlisten in obj){
if(obj[kindlisten]){
for(var i=0;i<obj[kindlisten].length;i++){
if(obj[kindlisten][i].id==token){
obj[kindlisten].splice(i,1);
return token;
}
}
}
}
};
//删除某一类的监听
var removelistener=function(key){
if(obj[key]){
delete obj[key];
}
};
return {
listen:listen,
removelistener:removelistener,
removeone:removeone,
publish:publish
}
}
更多相关文章
- java使用compareTo实现一个类的对象之间比较大小
- 在Java中,使用DefaultSelenium对象在selenium中启动测试,我如何找
- Java学习第9天(6):面向对象-多态-object
- 如何在命令中传递对象参数?
- JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的
- JAVA复习3 Java类和对象
- java对象判断是否为空工具类
- 【阿里云】Java面向对象开发课程笔记(十六)——抽象类