我的目标是迭代一个函数列表,然后依次调用每个函数。我想避免使用匿名函数,但我很难找出自己的错误所在(使用下划线,但原则应该非常相似)。
function wait() {
console.log("wait")
}
function more() {
console.log("more")
}
_.each([wait, more], Function.prototype.call.apply)
不幸的是,这个错误。
Uncaught TypeError: Function.prototype.apply was called on undefined, which is a undefined and not a function
我认为这是因为迭代器func是用三个参数(item、index、array)调用的,而Function.prototype.call.apply需要null作为第二个参数,而不是索引。
当我尝试这个时,它失败了,出现了新的错误。
_.each([wait, more], _.partial(Function.prototype.call.apply, _, null))
Uncaught TypeError: Function.prototype.apply was called on [object Window], which is a object and not a function
最后,这是可行的。
unary = function(func) {
return function(a) {
return func.apply(a);
};
};
_.each([wait, more], unary(_.partial(Function.prototype.call)))
https://stackoverflow.com/questions/26228478
复制相似问题