我可以用两种方式使用express
,也就是说我可以用两种方式初始化它:
var app = express();
或var app = new express();
从事物的外观来看,两者都在调用构造函数,所以两者之间是否存在任何差异,我主要是要求表现明智,是否真的有任何区别,因为我似乎没有遇到任何差异。
如果没有真正的区别,为什么我看到的每个教程都是第一种方式,而不是第二种方式,因为第二种方式似乎更清晰。
答案 0 :(得分:3)
在这种情况下,将express()
作为函数调用更为正确。
function createApplication() {
var app = connect();
utils.merge(app, proto);
app.request = { __proto__: req, app: app };
app.response = { __proto__: res, app: app };
app.init();
return app;
}
这基本上是一个工厂函数,而不是构造函数。使用new
关键字将创建一个不必要的对象,由于createApplication
返回一个对象,该对象将被立即丢弃,this
关键字创建的自动new
将被丢弃(这是JavaScript语言是如何工作的。)
所以答案是两个版本都可以正常工作,但这里不需要使用new
。