返回列表

解读VUE源码之pluckModuleFunction

默认分类 2018/11/18 07:43

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')