js-观察者模式简单实现
2018-07-31 本文已影响0人
雨蒙_snow
function Emitter() {
this.handlers = {};
}
Emitter.prototype = {
on: function(type, cb) {
var _this = this;
if(!(type in _this.handlers)) {
_this.handlers[type] = [];
}
_this.handlers[type].push(cb);
return _this;
},
emit: function(type) {
var _this = this;
var argsArr = Array.prototype.slice.call(arguments, 1);
for(var i=0;i<_this.handlers[type].length;i++) {
_this.handlers[type][i].apply(_this, argsArr);
}
return _this;
}
}
var emit = new Emitter();
emit.on('say', ()=>{console.log('i am on')});
emit.emit('say');