Nodejs系列-4-Event模块

概述

事件是整个 Node.js 的核心,Node.js中大部分模块都使用或继承了该模块(类似 WebAPI 中的EventTarget)。所有能触发事件的对象都是 EventEmitter 类的实例。一般开发中我们可能用到的机会比较少,但很多模块底层均是依赖该模块实现的。

Event 模块

例子,一个简单的 EventEmitter 实例,绑定了一个监听器。 eventEmitter.on() 用于注册监听器, eventEmitter.emit() 用于触发事件:

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
  console.log('触发事件');
});
myEmitter.emit('event');

延伸知识点

document.body对象的原型链关系:

document.body>HTMLBodyElement>HTMLElement>Element>Node>EventTarget>Object

可以看到Node对象其实都继承了 nodeEventTarget 这个事件对象,所以只要是元素都会有事件。