其实你把 Map 打印出来,就见端倪了,比如我本地有一个项目中的 routersMap 是这样的:
Map {
{ target: pagesController { [Symbol(prefix)]: 'api/v0' },
method: 'get',
path: '/login' } => [ [Function], [Function: index] ],
{ target: pagesController { [Symbol(prefix)]: 'api/v0' },
method: 'get',
path: '/query' } => [ [Function], [Function], [Function: query] ],
{ target: pagesController { [Symbol(prefix)]: 'api/v0' },
method: 'get',
path: '/reports' } => [ [Function], [Function: getReports] ],
{ target: pagesController { [Symbol(prefix)]: 'api/v0' },
method: 'post',
path: '/reports' } => [ [Function], [Function: saveReports] ],
{ target: GraphqlController { [Symbol(prefix)]: '' },
method: 'all',
path: '/graphql' } => [Function: allGraphql],
{ target: pagesController { [Symbol(prefix)]: 'pages' },
method: 'get',
path: '/index' } => [Function: index] }
里面的 key value 键值对可以以箭头函数 => 来隔离开看:
key 就是 {target: xx, method: xx, path: xx},把一个对象作为 key, value 就是一个 function 数组。
对于 for (let [ conf, controller ] of routersMap) {
conf 对应到的就是
{ target: pagesController { [Symbol(prefix)]: 'api/v0' },
method: 'get',
path: '/login' }
而 controller 对应到的是:
[ [Function], [Function: index] ]
对于 for xx of oo 的用法,可以再来了解下这个:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of