javascript – lodash.js在function.apply上的部分应用程序

给定以下函数,_.partial函数的使用会引发错误:

function foo(x, y) { return 1 + 2; }
p = _.partial(foo.apply, null);
p([1,2]);

我明白了:

TypeError: Function.prototype.apply was called on [object Window], which is a object and not a function

我在这里做错了什么?还有另一种方法来实现我正在做的事情吗?

解决方法:

我相信你的意思:

function foo(x, y) { return x + y; }
p = Function.apply.bind(foo, null);
p([1,2]); // ===3

最接近我可以通过_.bind得到下划线:

function foo(x, y) { return x + y; }
p = _.bind(foo.apply, foo, 0);
p([1,2]); // ===3

您可能还想考虑另一个灵活使用该函数,对两个以上元素的整数数组求和:

 function foo(x, y) { return x + y; }
_.reduce([1,2,3,4,5], foo); // == 15

或使用vanillaJS:

function foo(x, y) { return x + y; }
[1,2,3,4,5].reduce(foo); // == 15
上一篇:javascript – 递归地从“对象数组”中选择一个字段


下一篇:javascript – 将数组中的每个其他值移动到一个新数组中