给定以下函数,_.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