这里的Javascript新手。虽然我在JavaScript中学习高阶函数,但我看到以下示例。有人可以在调用.chain()之前解释_(item)做了什么吗?谢谢。
//items is an array with nested objects as elements
var count = _(items).chain()
.flatten()
.reduce(.....)
.value();
答案 0 :(得分:3)
_(items).chain()
相当于_.chain(items)
。两者都用于使object-oriented style syntax成为可能,其中方法被链接以对前一结果起作用。因此,您开始使用的第一个值必须以某种方式包装,以便它理解这样的下划线方法。
_(items)
自行调用(不含.chain()
)将为您提供下划线方法,但结果无法进一步链接。 _.chain(items)
调用不仅提供对下划线方法的访问,而且还确保此行为继续,允许下划线方法进一步链接。
更改日志有助于理解为什么存在这两种语法:
0.4.0 - 2009年11月7日 - 差异 - 文档
现在可以以面向对象的方式调用所有下划线函数,如下所示:
_([1, 2, 3]).map(...);
。1.2.4 - 2012年1月4日 - 差异 - 文档
您现在可以(并且可能应该,因为它更简单)写
_.chain(list)
而不是_(list).chain()
。
因此,您引用的语法是"较旧的"语法。