在Lodash中發現的一種常見且非常可讀的模式是「鏈接」。通過鏈接,前一個函數調用的結果作爲下一個函數的第一個參數傳入。如何在Lodash中創建(可選)可鏈接的函數?
如從Lodash文檔這個例子:
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
// A sequence with chaining.
_(users)
.head()
.pick('user')
.value();
head
和pick
都可以鏈條之外被使用。
通過源代碼,鏈中調用的實際方法並沒有明顯的特殊性 - 所以它必須鏈接到最初的_
調用和/或value
調用。
頭:https://github.com/lodash/lodash/blob/4.11.0/lodash.js#L6443 採擷:https://github.com/lodash/lodash/blob/4.11.0/lodash.js#L12598
怎樣才能實現這種模式有自己的方法?它有一個術語嗎?
一個例子可能是:
const house =
this
.addFoundation("concrete")
.addWalls(4)
.addRoof(true)
.build();
// Functions being (each can be called by manually as well)
addFoundation(house, materialType) { ... }
addWalls(house, wallCount) { ... }
addRoof(house, includeChimney) { ... }
// And..
build() // The unwrapped method to commit the above
您正在尋找['_.mixin'](https://lodash.com/docs#mixin),它用於創建方法。 [這裏](https://github.com/lodash/lodash/blob/4.11.0/lodash.js#L15599)和[there](https://github.com/lodash/lodash/blob/4.11.0 /lodash.js#L14708)魔法發生。 – Bergi