javascript - koa-router 中的 new Router() 和 Router() 是否相同?
问题描述
我看到了koa-router
如下使用的代码。
const Router = require('koa-router')
const routerWithoutNew = Router()
我认为这是一个错误,但我很惊讶地看到它正常工作。
const Router = require('koa-router')
const routerWithNew = new Router()
而且,它也可以正常工作。
routerWithoutNew
和有什么区别routerWithNew
?
解决方案
由于 Koa Router 源代码中的以下行,它们被同等对待:
if (!(this instanceof Router)) return new Router(opts);
(来自https://github.com/koajs/router/blob/56735f009768e32cce89af60337e7e2a8d6bbbc4/lib/router.js#L51)