为什么 Router 在 express 4.x 中像普通函数一样使用而不是构造函数?

Why is Router used like normal function instead of constructor in express 4.x?

我是试图了解 Express 4.x 路由的新手,我正在阅读他们的指南:http://expressjs.com/guide/routing.html

最后一段说的是:

The express.Router class can be used to create modular mountable route handlers. A Router instance is a complete middleware and routing system

附带的代码是:

var express = require('express');
var router = express.Router();

为什么这个 express.Router 构造函数在没有 new 运算符的情况下像普通函数一样被调用?他们在文档中说它是 class,他们根据 javascript 风格(首字母大写)命名它,但他们(以及所有其他在线示例)将它用作普通函数。

除了传统的实例化,有些人还喜欢支持函数式风格。这是通过在函数顶部添加一个简单的检查来完成的:

function Router() {
  if (!(this instanceof Router))
    return new Router();

  // ...
}

这允许支持两种类型的调用(使用 new 和不使用)。