_createOver.js
 1  var apply = require('./_apply'),
 2      arrayMap = require('./_arrayMap'),
 3      baseIteratee = require('./_baseIteratee'),
 4      baseRest = require('./_baseRest'),
 5      baseUnary = require('./_baseUnary'),
 6      flatRest = require('./_flatRest');
 7  
 8  /**
 9   * Creates a function like `_.over`.
10   *
11   * @private
12   * @param {Function} arrayFunc The function to iterate over iteratees.
13   * @returns {Function} Returns the new over function.
14   */
15  function createOver(arrayFunc) {
16    return flatRest(function(iteratees) {
17      iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
18      return baseRest(function(args) {
19        var thisArg = this;
20        return arrayFunc(iteratees, function(iteratee) {
21          return apply(iteratee, thisArg, args);
22        });
23      });
24    });
25  }
26  
27  module.exports = createOver;