给定以下函数,_.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
您可能还想考虑该函数的另一种灵活用法,对超过 2 个元素的整个数组求和:
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 - lodash.js 在 function.apply 上的部分应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363051/