3. General Purpose
Client-side and Server-side
• It has nothing to do with DOM manipulation
(unlike jQuery)
• No functionality specific to web browsers
5. Over 70 Functions
Collections Arrays Functions Objects Utility
- each - first - bind - keys - noConflict
- map - initial - bindAll - values - identity
- reduce
- last - memoize - functions - times
- reduceRight
- find - rest - delay - extend - mixin
- filter - compact - defer - defaults - uniqueId
- reject - flatten - throttle - clone - escape
- all - without - debounce - tap - template
- any
- union - once - has
- include
- invoke - intersection - after - isEqual Chaining
- pluck - difference - wrap - isEmpty - chain
- max - uniq - compose - isElement - value
- min - zip - isArray
- sortBy
- indexOf - isArguments
- groupBy
- sortedIndex - lastIndexOf - isFunction
- shuffle - range - isString
- toArray - is…(more like this)
- size
6. JavaScript Functions
• Functions are objects
• Functions are values
– Can be assigned to a variable
– Can be passed to another function as an argument
– Can be returned by a function
7. Functional Programming
• Functional programming is using functions as
a mapping from one value to another value
• Thinking and programming in a functional
style means using higher-order functions
– Composition
– Chaining
12. Metaprogramming
wrap _.wrap(function, wrapper)
• Wraps the first function inside of the wrapper function, passing it as the
first argument. This allows the wrapper to execute code before and after
the function runs, adjust the arguments, and execute it conditionally.
tap _.tap(object, interceptor)
• Invokes interceptor with the object, and then returns object.
13. Functional Helpers
compose _.compose(*functions)
• Returns the composition of a list of functions, where each function
consumes the return value of the function that follows. In math terms,
composing the functions f(), g(), and h() produces f(g(h())).
14. Flow Helpers
after _.after(count, function)
• Creates a version of the function that will only be run after first being
called count times. Useful for grouping asynchronous responses, where
you want to be sure that all the async calls have finished, before
proceeding.