我在很多 node 上都看到了这种模式.js库:

Master.prototype.__proto__ = EventEmitter.prototype;

(来源here)

有人能给我举个例子解释一下,为什么这是一个如此常见的模式,什么时候方便?

推荐答案

正如上面代码的注释所说,它将使MasterEventEmitter.prototype继承,因此您可以使用该"类"的实例来发出和侦听事件.

例如,你现在可以做:

masterInstance = new Master();

masterInstance.on('an_event', function () {
  console.log('an event has happened');
});

// trigger the event
masterInstance.emit('an_event');

Update:正如许多用户指出的,在Node中实现这一点的"标准"方法是使用"util".继承人:

var EventEmitter = require('events').EventEmitter;
util.inherits(Master, EventEmitter);

2nd Update:随着ES6课程的到来,我们建议现在扩展EventEmitter个课程:

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

myEmitter.on('event', () => {
  console.log('an event occurred!');
});

myEmitter.emit('event');

https://nodejs.org/api/events.html#events_events

Node.js相关问答推荐

序列化事务未按预期工作

条件内的表达式

Puppeteer 的 BrowserFetcher 发生了什么?

如果我加入另一个公会且我的​​机器人已在其中,欢迎消息发送错误

Node js 处理回调和 Promise

Nestjs重写子类dto nodejs中的属性

找不到模块bcryptjs

Typescript 条件语句不过滤值?

登录用户并获取他们的个人资料

看起来这段代码try GET 请求发送的值变为空白

加速 sequelize ORM 中的查询

NodeJs 过滤掉目录异步

在本地运行 Cloud Functions 会出现错误functions.config() 不可用

JSHint 是否支持异步/等待?

Dart 语言比 JavaScript (Node.js) 有什么好处

Bootstrap 中的 Grunt 依赖冲突

Mongoose - 保存字符串数组

从 React(同构应用程序)进行 API 调用时出现Access-Control-Allow-Origin问题

如何仅在丢失的路由上将 Express.js 设置为 404?

#!/bin/env是什么意思(在 node.js 脚本的顶部)?