1

我可以通过express两种方式使用,即我可以通过两种方式对其进行初始化:

var app = express();或者var app = new express();

从表面上看,两者都在调用构造函数,所以两者之间真的有什么区别吗,我主要是问性能方面,真的有区别吗,因为我似乎没有经历过。

如果没有真正的区别,我看到的每个教程都是第一种方式而不是第二种方式,因为第二种方式似乎更清晰。

4

1 回答 1

3

在这种情况下express(),作为函数调用更正确。

https://github.com/visionmedia/express/blob/8a1e865e37016f279d957f04117007c36ac195e3/lib/express.js#L32

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返回一个对象,关键字创建的自动thisnew丢弃(这正是 JavaScript 语言的工作原理)。

所以答案是两个版本都可以正常工作,但new这里不需要使用。

于 2013-08-15T22:00:45.893 回答