繁体   English   中英

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

[英]Where is the this.on event handler coming from? Is it a library?

我从随便的源代码中读取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

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

在当前版本的代码中,这是在/lib/express.js使用以下行完成的:

mixin(app, EventEmitter.prototype, false);

其中mixin来自merge-descriptors包。

Node JS文档中

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

该行上的this是express应用程序的实例,在这里可以看到 ,它继承了EventEmitter的所有方法(包括on() )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM