实际返回了什么?

时间:2014-04-01 16:05:11

标签: javascript node.js express

我最近在学习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;
};

1 个答案:

答案 0 :(得分:0)

关于你的第一个问题:

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

var Router是由function router(req, res, next)创建的对象,您的var routerRouter的新对象。在javascript中几乎所有东西都是一个对象。您可以阅读更多here

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