gpt4 book ai didi

javascript - 如何将多个参数传递给 Javascript 中的委托(delegate)?

转载 作者:行者123 更新时间:2023-11-30 00:32:51 24 4
gpt4 key购买 nike

我有以下使用 jQuery 的 JS 代码:

var anArray=[];
var passIntoFun =100; // calculated value;

function ArrayIteratorFun(index, element, thirdParam){
// function code.
}

我想使用 .each 构造调用 ArrayIteratorFun,例如:

$(anArray).each(ArrayIteratorFun(passIntoFun));

我只能通过包装成一个函数来调用它:

$(anArray).each(function(i,e){ArrayIteratorFun(i,e,passIntoFun);});

上面的代码有没有更好的写法?

最佳答案

假设您的示例过于简单,并且您的函数无法访问您希望作为参数传入的变量(正如一条评论所暗示的)...

您遇到的问题是预填充 ArrayIteratorFun 的某些参数(在您的情况下为thirdParam)。有时您会看到这种称为部分应用或柯里化(Currying)的技术。

您碰巧想要应用第三个参数(保留前面的未填充),这消除了使用 Function.prototype.bind 的可能性。 . bind 很有用,但我经常使用更灵活的 partial来自 underscore 的函数.

使用 partial,您可以应用任意参数,方法是使用 _ 代替您稍后要应用/填充的参数:

$(anArray).each(_.partial(ArrayIteratorFun, _, _, passIntoFun));

上面忽略了 ArrayIteratorFun 的前两个参数(使用下划线)并将 passIntoFun 的值应用到第三个参数。

编辑: 我不知道 jQuery 提供的任何方式来做与 _.partial 相同的事情。但是,如果您被限制不使用下划线(或类似的框架),那么我建议您查看 the implementation下划线和 this great article 中的 partial关于javascript中的部分应用程序。这些都提供了仅使用普通 javascript 实现的方法。

关于javascript - 如何将多个参数传递给 Javascript 中的委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28547584/

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