1、JavaScript里面,自定义事件的简单实现(事件队列的简单实现)
2、实现的代码
var Event = {
on: function(eventName, callback) {
//下面的两个undefined的判断很重要
//保证了,动态的初始化了,对象的属性
if(typeof Event.handlers == "undefined") {
Event.handlers = {};
}
if(typeof Event.handlers[eventName] == "undefined") {
Event.handlers[eventName] = [];
}
Event.handlers[eventName].push(callback);
},
emit: function(eventName) {
//只有含有这个,时间的时候,才会调用回调函数
if(Event.handlers[eventName] instanceof Array) {
var handler = Event.handlers[eventName];
for(var i = 0, len = handler.length; i < len; i++) {
handler[i](arguments[1]);
}
}
},
removeHandler: function(type, handler) {
if(Event.handlers[type] instanceof Array) {
var handlers = Event.handlers[type];
for(var i = 0, len = handlers.length; i < len; i++) {
if(handlers[i] === handler) {
break;
}
}
handlers.splice(i, 1);
}
}
}
3、测试代码
function a(result) {
console.log(result);
}
function b() {
console.log('test');
}
Event.on('test', a);
Event.on('test', b);
//Event.removeHandler('test', b);
Event.emit('test', 'hello world');