gpt4 book ai didi

javascript - 在 for 循环中调用 Function.prototype.call.apply

转载 作者:行者123 更新时间:2023-11-30 05:32:08 25 4
gpt4 key购买 nike

我的目标是遍历函数列表并依次调用每个函数。我想避免使用匿名函数,但我很难弄清楚我哪里出错了(使用下划线,但无论如何原则应该非常相似)

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 是用三个参数(项、索引、数组)调用的,而 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)))

最佳答案

你可以试试这个:

_.each([wait, more], function(f){ f(); });

甚至这样:

_.each([wait, more], function(f){ f.call(); });

更新:然后试试这个:

_.each([wait, more], Function.prototype.call, Function.prototype.call)

使用第三个参数绑定(bind)上下文,like this .检查the doc .

关于javascript - 在 for 循环中调用 Function.prototype.call.apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26228478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com