this.on事件处理程序来自哪里?它是图书馆吗?

时间:2018-04-17 17:43:41

标签: javascript express

我随便从快速源代码中读取application.js。

这个事件来自哪里?来自哪里?这是普通的旧javascript还是有一些提供此事件模式的库?

 this.on('mount', function onmount(parent) {
    // inherit trust proxy
    if (this.settings[trustProxyDefaultSymbol] === true
      && typeof parent.settings['trust proxy fn'] === 'function') {
      delete this.settings['trust proxy'];
      delete this.settings['trust proxy fn'];
    }

https://github.com/expressjs/express/blob/master/lib/application.js#L89

2 个答案:

答案 0 :(得分:2)

app,应用程序原型(在/lib/application.js中定义并在/lib/express.js中使用)被赋予EventEmitter的方法,这是一个内置的节点类型。

在当前版本的代码中,这是在/lib/express.js中使用

行完成的
mixin(app, EventEmitter.prototype, false);

其中mixin来自merge-descriptors包。

答案 1 :(得分:1)

来自Node JS documentation

  

发出事件的所有对象都是EventEmitter类的实例。这些对象公开eventEmitter.on()函数,该函数允许将一个或多个函数附加到对象发出的命名事件。

该行的this是快递应用的一个实例,seen here继承了EventEmitter的所有方法(包括on())。