我随便从快速源代码中读取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
答案 0 :(得分:2)
app
,应用程序原型(在/lib/application.js
中定义并在/lib/express.js
中使用)被赋予EventEmitter
的方法,这是一个内置的节点类型。
在当前版本的代码中,这是在/lib/express.js
中使用
mixin(app, EventEmitter.prototype, false);
其中mixin
来自merge-descriptors
包。
答案 1 :(得分:1)
发出事件的所有对象都是EventEmitter类的实例。这些对象公开eventEmitter.on()函数,该函数允许将一个或多个函数附加到对象发出的命名事件。
该行的this
是快递应用的一个实例,seen here继承了EventEmitter的所有方法(包括on()
)。