为什么路由器使用正常功能而不是快速4.x中的构造函数?

时间:2015-06-04 11:56:38

标签: javascript node.js express url-routing

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

在最后一段中,它说:

  

express.Router类可用于创建模块化可安装路由   处理程序。路由器实例是一个完整的中间件和路由   系统

和随附的代码是:

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

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

1 个答案:

答案 0 :(得分:5)

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

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

  // ...
}

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