VUE源码中有名为 pluckModuleFunction 的方法,
function pluckModuleFunction(
modules,
key
) {
return modules ?
modules.map(function(m) {
return m[key];
}).filter(function(_) {
return _;
}) :
[]
}
一开始没看明白,这样做的意图,后面研究了一下,发现这个函数的主要作用是 从 加载的模块 数组中,将同名的方法抽取出来,放到一个新数组中返回。
function pluckModuleFunction(modules, key) {
return modules.map(function(m) {
return m[key]
}).filter(function(_) {
return true
})
}
var list = []
list.push({
aa: function(){console.log('aa1')},
bb: function(){console.log('bb1')},
cc: function(){console.log('cc1')}
})
list.push({
aa: function(){console.log('aa2')},
cc: function(){console.log('cc2')},
dd: function(){console.log('dd2')}
})
list.push({
aa: function(){console.log('aa3')},
bb: function(){console.log('bb3')},
dd: function(){console.log('dd3')}
})
list.push({
aa: function(){console.log('aa4')},
dd: function(){console.log('dd4')}
})
pluckModuleFunction(list, 'aa')
pluckModuleFunction(list, 'bb')