JS 观察者模式

ⅰ亾dé卋堺 提交于 2020-01-08 05:33:11

Events = function() {

var listen, log, obj, one, remove, trigger, __this;
obj = {};
__this = this;

listen = function(key, eventfn) { //把简历扔盒子, key就是联系方式.
var stack; //stack是盒子
stack = obj[key] != null ? obj[key] : obj[key] = [];
return stack.push(eventfn);
};

one = function(key, eventfn) {
remove(key);
return listen(key, eventfn);
};

remove = function(key) {
return obj[key] != null ? obj[key].length = 0 : void (0);
};

trigger = function() { //面试官打电话通知面试者
var fn, stack, i, len, key;
key = Array.prototype.shift.call(arguments);
stack = obj[key] != null ? obj[key] : obj[key] = [];
for (i = 0, len = stack.length; fn=stack[i++];) {
if (fn.apply(__this, arguments) === false) {
return false;
}
}
}
return {
listen: listen,
one: one,
remove: remove,
trigger: trigger
}


}


var adultTv = Events();

adultTv.listen('play', function(data) {
alert("whose file will show today " + data.name);
});

//发布者
adultTv.trigger('play', {
'name': 'david'
})

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!