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

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

本文关键字:一样 Router 构造函数 expression4 函数 为什么      更新时间:2023-09-26

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

在最后一段中,它说:

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

附带代码为:

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

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

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

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

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