获得咖喱功能

时间:2016-04-25 15:56:14

标签: lodash

如何在lodash中获得一个curried函数的arity?

考虑:

const uniqueBy = curry((predicate, data) => {});

在我写作的测试中,我想知道uniqueBy函数的优点以及部分应用uniqueBy函数的arity。

const partiallyApplied = uniqueBy(x => x.get('name')); expect(partiallyApplied.length).to.equal(1);

等等。

在普通JS中,我们可以uniqueBy.length。在lodash中执行相同操作始终会返回0,因为我们最终会计算wrapper()函数的arity。

在lodash中有定义的方法吗?

1 个答案:

答案 0 :(得分:3)

Lodash将其咖喱和其他函数包装器的arity存储在未公开的WeakMap的元数据中。它避免了使用.length创建函数,因为这是额外的开销(通常条件为10 args)并且可能因ES6默认参数而变得复杂。