Javascript 实际返回的是什么?

Javascript 实际返回的是什么?,javascript,node.js,express,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__ =

我最近在学习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(...);
什么是路由器?这是功能
路由器(req、res、next)
?如果是,我可以调用
\u路由器(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路由器
是由
功能路由器(req,res,next)
创建的对象,您的
var路由器
路由器
的新对象。在javascript中,几乎所有内容都是对象。你可以读更多


如果他们使用你的aproach,他们就没有构造函数了。他们使用构造函数来做
router.handle(req,res,next)var路由器新建路由器(req、res、next)如果您知道参数的作用。

是和是。虽然修改函数的原型有点奇怪……我不明白为什么它们在这里返回路由器函数。为什么要这样做呢,问问express的开发者。我认为你不能调用
var\u router=new router(req,res,next)
require
返回的
Router
函数(选项){…}
。您只能调用路由器(req、res、next)