实际返回的内容

What is actually returned?

本文关键字:返回      更新时间:2023-09-26

我最近在学习express.js。下面的代码是从 express.js 的路由器库复制的。

var proto = module.exports = function(options) {
  options = options || {};
  function router(req, res, next) {
    router.handle(req, res, next);
  }
  // mixin Router class functions
  router.__proto__ = proto;
  router.params = {};
  router._params = [];
  router.caseSensitive = options.caseSensitive;
  router.strict = options.strict;
  router.stack = [];
  return router;
  };

我的问题是如果我打电话会返回什么

var Router = require('./router');
var _router = new Router(...);

什么是_router?是函数router(req, res, next)吗?如果是,我可以打电话给_router(req, res, next);吗?

如果我错了,有人可以解释一下代码的作用吗?

如果是,他们为什么不这样做:

var proto = module.exports = function(options) {
options = options || {};
var router = {};
// mixin Router class functions
router.__proto__ = proto;
router.params = {};
router._params = [];
router.caseSensitive = options.caseSensitive;
router.strict = options.strict;
router.stack = [];
return router;
};

对于您的第一个问题:

var Router = require('./router');
var _router = new Router(...);

var Routerfunction router(req, res, next)创建的对象,而你的var routerRouter的新对象。在javascript中,几乎所有东西都是一个对象。您可以在此处阅读更多内容。

如果他们使用你的aproach,他们将没有构造函数。他们使用构造函数来做router.handle(req, res, next);我不知道他们为什么需要句柄,你可以研究更多的代码或询问开发人员。但是,如果您知道参数的作用,则可以使用该var router new Router(req,res,next);