我找到了一个难得的有用的木瓜资源,例如
var object = {
firstName: 'Fredrick',
lastName: 'Townsend',
first: function() {
return this.firstName;
},
last: function() {
return this.lastName;
}
};
var methods = _.map(_.functions(object), function(item) {
return [ _.bindKey(object, item) ];
});
_.invokeMap(methods, 0);
我不理解invokeMap的第二个参数(0
发布于 2017-07-27 21:04:16
首先,让我们看一个更简单的例子:
var array = [
[function() { console.log('1') }, function() { console.log('2') }],
[function() { console.log('3') }, function() { console.log('4') }]
];
console.log('_.invokeMap(array, 0)');
_.invokeMap(array, 0);
console.log('_.invokeMap(array, 1)');
_.invokeMap(array, 1);<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
现在来看你的代码:
var methods = _.map(_.functions(object), function(item) {
return [ _.bindKey(object, item) ]; // <== ! return array
});_.map的函数迭代器从一个元素返回数组。因此,在您的示例中,变量methods是两个元素的数组,每个元素都是一个元素的另一个数组。

当您在这里将0作为第二个参数传递时,_.invokeMap(methods, 0); lodash将从methods迭代并调用存储在数组的第一个元素中的函数。
_.invokeMap方法的文档。
https://stackoverflow.com/questions/45338883
复制相似问题