我对Express中的两行源代码感到困惑

时间:2014-06-12 07:37:42

标签: javascript node.js express

<{1>}中的

./lib/express.js

我知道它会创建一个快速应用程序并将其返回给我们,我们收到的应用程序是一个在HTTP'请求'事件发生时会触发的函数,但这两行代码的目的是什么

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

    mixin(app, proto);
    mixin(app, EventEmitter.prototype);

    app.request = { __proto__: req, app: app };
    app.response = { __proto__: res, app: app };
    app.init();
    return app;
}

2 个答案:

答案 0 :(得分:0)

我不知道什么表达,但这就是我的样子:

__proto__: req,

设置&#34; self&#34;到req的值(可能是请求的结果)

app: app 

如果您只将app / request对象传递给另一个函数,则它是对response值的引用。即:

myFunction(app.response);

现在,根据您的范围,myFunction可能无法找到app,因此响应对象包含对它的引用,无论您的函数范围如何,都可以与其进行交互是

答案 1 :(得分:0)

它基本上是:

的快捷方式
app.request = new req();
app.request.app = app;

__proto__属性设置对象prototypeprototype定义对象继承的方法。例如,Array.prototype.slice[1,2,3].slice(1)提供app。关于原型的特殊之处在于原型的每个实例共享相同的方法。因此,不会重新创建原型的方法,从而节省了性能。

是,request只是一个参考,因此app.settings对象上的方法可以访问this.app.settings到{{1}}。