闲极无聊做的一个简易订阅模式
先创建一个订阅器对象,然后调用add方法给一个订阅名称添加方法之类的
然后用publish就全部执行了
code:
//=======================
//疯狂紫萧的订阅模式
//为了简化订阅而写
//=======================
//订阅管理器
//example:var sb=new Subscriber();
// sb.add("t",function(){})
// sb.publish("t")
var Subscriber=function(){
var _subData=[];
//添加一个订阅事件
this.add = function (name, callback) {
if (!callback) return;
if(!_subData[name])_subData[name]=[];
_subData[name].push(callback);
}
//删除一个订阅事件
this.del = function (name) {
if (_subData[name]) {
delete _subData[name];
}
}
//触发一个订阅事件的订阅者
this.publish = function (name) {
var list = [];
if (list=_subData[name]) {
for (var i = 0; i < list.length; i++) {
list[i].apply(this);
}
}
}
//取消订阅
this.cancel = function (name, callback) {
if (!callback) return;
var list = [];
if (list = _subData[name]) {
for (var i = 0; i < list.length; i++) {
if (list[i] == callback) {
_subData[name].splice(i, 1);
}
}
}
}
}