2016-04-25 77 views
2

如何在lodash中獲得咖喱功能的效果?獲得curried功能的效果

考慮:

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

在測試我寫,我想知道uniqueBy功能的元數以及部分應用uniqueBy功能的元數。

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

等。

在普通的JS我們可以做uniqueBy.length。在lodash中做同樣的事情總是返回0,因爲我們最終計算了wrapper()函數的參數。

在lodash中有這樣做的定義方式嗎?

回答

3

Lodash將curried和其他函數包裝器的元數據存儲在未公開的WeakMap的元數據中。它避免了使用.length創建函數,因爲這是額外的開銷(通常有條件可以達到10個參數),並且可能因ES6默認參數而變得複雜。

+0

感謝您確認John-David。非常感激。 –