JS实现一个简单的事件监听器(订阅发布)

来由???
一天闲来无事看到一个面试题事题,说用原生的js实现一个简单的事件监听器?一开始连思考都没有思考直接上谷歌了,找了很多,还是没有找到想要的。

面试题是-->请用jS实现一个简单的事件监听器?

下面直接亮代码了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 构造函数
function EventDispatcher() {
this.events = {};
}
// 事件监听
EventDispatcher.prototype.addEventListener = function(type, handler) {
if (typeof handler != 'function') return;
this.events[type] = handler;
};
// 事件分发
EventDispatcher.prototype.dispatchEvent = function(type, body) {
var e = {};
e.body = body;
this.events[type](e); // 分发时候调用函数,并带上参数
};
// 实例化对象
var d = new EventDispatcher();
// 事件分发出去
d.dispatchEvent('testEvent', '213123123');
// 监听接收到分发的对象
d.addEventListener('testEvent', function(e){
console.log('callback fired-----' + e.body);
});
文章目录
|