,
./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;
}
答案 0 :(得分:0)
我不知道什么表达,但这就是我的样子:
__proto__: req,
设置" self"到req
的值(可能是请求的结果)
app: app
如果您只将app
/ request
对象传递给另一个函数,则它是对response
值的引用。即:
myFunction(app.response);
现在,根据您的范围,myFunction
可能无法找到app
,因此响应对象包含对它的引用,无论您的函数范围如何,都可以与其进行交互是
答案 1 :(得分:0)
它基本上是:
的快捷方式app.request = new req();
app.request.app = app;
__proto__
属性设置对象prototype
。 prototype
定义对象继承的方法。例如,Array.prototype.slice
将[1,2,3].slice(1)
提供app
。关于原型的特殊之处在于原型的每个实例共享相同的方法。因此,不会重新创建原型的方法,从而节省了性能。
是,request
只是一个参考,因此app.settings
对象上的方法可以访问this.app.settings
到{{1}}。