我想创建一个 JavaScript 管道,例如 powershell、bash (|) 或 f# (|>)。 IE。相当于
getstuff() | sort() | grep("foo") | take(5)
我在coffeescript论坛上看到了关于这个问题的讨论,但最终他们搁置了它,因为每个人都说你可以用函数链做同样的事情。但据我所知,requires getstuff 返回的东西有一个排序方法; sort 方法必须返回具有 grep 方法的内容等。这是相当严格的,因为它要求所有潜在的管道成员提前相互了解。我知道 JavaScript 有一些非常聪明的技巧,而我仍然处于 101 级 - 所以这可行
getstuff().sort.().grep().take()
没有这个限制
最佳答案
is this doable
getstuff().sort.().grep().take()
without that constraint
没有。
<小时/>I like short answers! Can you suggest any way that something like it could be done
在较高的层次上,您可以执行类似于 jQuery 在幕后执行的操作来允许链接。创建一个类似数组的包装对象类型,其中包含您希望能够调用的所有函数;除了显式传递的参数之外,每个连续的链式调用还可以在内部堆栈上进行操作。
并不是要继续打败 jQuery 的死马,而是理解我正在谈论的内容的最佳方法之一就是开始挖掘 jQuery core source code并弄清楚链接是如何工作的。
关于javascript 函数链接,链成员无需相互了解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264179/