在connect.js源中定义的应用程序在哪里?

时间:2015-02-23 13:58:21

标签: node.js connect

当读取connect.js源代码时,我无法理解这行代码:

function app(req, res, next){ app.handle(req, res, next); }

问题是:app定义在哪里? app.handle(req, res, next);

https://github.com/senchalabs/connect/blob/master/lib/connect.js#L28

3 个答案:

答案 0 :(得分:0)

appproto.jshttps://github.com/senchalabs/connect/blob/45fe02dde8b1f1da0dde0c593038753714f1d99b/lib/proto.js#L87

中定义

在JavaScript中,函数是具有属性的对象。在app定义下方的行中,他们使用utils-merge合并proto.js中的属性:

merge(app, proto);

答案 1 :(得分:0)

appfunction app(....的第一行中定义。

但是app merge通过proto行使用util-merge merge(app,proto)扩展了EventEmitter.prototype

另请注意与proto.js合并,因为这也很重要。

查看与connect.js位于同一目录中的app文件,您将看到导出的完整function createServer() { function app(req, res, next){ app.handle(req, res, next); } merge(app, proto); merge(app, EventEmitter.prototype); app.route = '/'; app.stack = []; return app; } 对象。

{{1}}

答案 2 :(得分:0)

function app(req, res, next){ app.handle(req, res, next); }
//       ^^^                  ^^^

它就在那里定义。 handle函数稍后使用app添加到merge(app, proto) {在proto.js文件中定义)。

以下是代码执行操作的简单示例:

function dog () {
    dog.bark();
};

dog.bark = function () {
    console.log('Woof!');
};

dog();