我最近在学习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;
};
答案 0 :(得分:0)
关于你的第一个问题:
var Router = require('./router');
var _router = new Router(...);
var Router
是由function router(req, res, next)
创建的对象,您的var router
是Router
的新对象。在javascript中几乎所有东西都是一个对象。您可以阅读更多here。
如果他们使用你的aproach他们不会有一个构造函数。他们使用构造函数来router.handle(req, res, next);
我不知道为什么他们需要句柄,你可以学习更多代码或询问开发人员。但如果您知道参数的作用,您可能可以使用var router new Router(req,res,next);
。