我想创建一个JavaScript管道,例如powershell,bash(|)或f#(|>)。就是相当于

getstuff() | sort() | grep("foo") | take(5)


我在coffeescript论坛上看到了有关此问题的讨论,但最终他们搁置了它,因为每个人都说您可以使用函数链来做同样的事情。但据我所知,require getstuff返回的东西上带有排序方法。 sort方法必须返回上面带有grep方法等的东西。这非常有限制,因为它要求所有潜在的管道成员事先相互了解。我知道JavaScript中有一些非常聪明的技巧,但我仍然处于101级-这样可行吗

getstuff().sort.().grep().take()


没有那个约束

最佳答案

这可行吗

getstuff().sort.().grep().take()

  
  没有那个约束


没有。




  我喜欢简短的答案!你能建议任何类似的事情吗


在较高的层次上,您可以执行类似于jQuery在后台允许链接的操作。创建一个类似数组的包装对象类型,其中包含您希望能够调用的所有函数;除了显式传递的参数之外,每个后续的链式调用都可以在内部堆栈上进行操作。

不要一直打败那只笨拙的jQuery之马,但是了解我在说什么的最好方法之一就是开始研究jQuery core source code并弄清楚链接是如何工作的。

10-06 15:26