Javascript 实际返回的是什么?
我最近在学习express.js。下面的代码是从express.js的路由器库复制的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__ =
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)你说得对,我误解了同一个函数中的很多“路由器”,忘记了第一个函数。对于变量的名称,我相信路由器(req,res,next)是用来保证以后解决某些问题的,所以您可以在链中传递路由。