gpt4 book ai didi

javascript - 如何像 Lodash 一样创建(可选)可链接函数?

转载 作者:行者123 更新时间:2023-11-28 18:38:14 26 4
gpt4 key购买 nike

Lodash 中常见且非常易读的模式是“链接”。通过链接,前一个函数调用的结果将作为下一个函数的第一个参数传入。

例如 Lodash 文档中的示例:

var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];

// A sequence with chaining.
_(users)
.head()
.pick('user')
.value();

headpick 也可以在链外使用。

查看源代码,链中调用的实际方法没有什么明显的特殊之处 - 因此它必须链接到初始 _ 调用和/或 调用。

头: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

最佳答案

关于如何做到这一点的一个例子

function foo(arr) {
if (!(this instanceof foo)) {
return new foo(arr);
}

this.arr = arr;
return this;
}


foo.prototype.add = function(p) {
this.arr.push(p);
return this;
}

foo.prototype.print = function() {
console.log(this.arr);
return this;
}

foo([1, 2]).add(3).print();

假设您也想这样做

foo.add(3).print();

您需要在 foo 上创建一个方法(而不是原型(prototype))

foo.add = function(p) {
return foo([p]);
}

foo.add(3).print() // [3]

关于javascript - 如何像 Lodash 一样创建(可选)可链接函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com