调用JS函数时“_(items)”做了什么?

What does "_(items)" do when calling a JS function?

Javascript 这里是新手。当我在 JavaScript 中学习高阶函数时,我看到了以下示例。有人可以解释 _(item) 在调用 .chain() 之前做了什么吗?谢谢。

//items is an array with nested objects as elements
var count = _(items).chain()
      .flatten()
      .reduce(.....)
      .value();

_(items).chain() 等同于 _.chain(items)。两者都用于使 object-oriented style syntax 成为可能,其中链接的方法作用于先前的结果。因此,您开始的第一个值必须以某种方式 wrapped 以便它理解这种下划线方法。

_(items) 调用本身(没有 .chain())将为您提供下划线的方法,但结果不能进一步链接。 _.chain(items) 调用不仅提供对下划线方法的访问,而且确保此行为继续,允许进一步链接下划线方法。

更改日志有助于理解为什么会有这两种语法:

0.4.0November 7, 2009 — Diff — Docs

All Underscore functions can now be called in an object-oriented style, like so: _([1, 2, 3]).map(...);.

1.2.4January 4, 2012 — Diff — Docs

You now can (and probably should, as it's simpler) write _.chain(list) instead of _(list).chain().

所以你引用的语法是“旧”语法。