// (来自JavaScript高级程序设计) 自定义事件
function EventTarget() {
this.handler = {};
}
EventTarget.prototype = {
constructor: EventTarget,
// 添加事件
addHandler: function (type, fn) {
if (!this.handler[type]) this.handler[type] = [];
this.handler[type].push(fn);
},
// 删除事件
removeHandler: function (type) {
if (this.handler[type]) delete this.handler[type];
},
// 执行事件
fire: function (event) {
if (!event.target) event.target = this;
if (Array.isArray(this.handler[event.type])) {
var handlers = this.handler[event.type];
for (var i = 0, len = handlers.length; i < len; i ++) {
handlers[i](event);
}
}
}
};