| var baseMatches = require('./_baseMatches'), | |
|     baseMatchesProperty = require('./_baseMatchesProperty'), | |
|     identity = require('./identity'), | |
|     isArray = require('./isArray'), | |
|     property = require('./property'); | |
| 
 | |
| /** | |
|  * The base implementation of `_.iteratee`. | |
|  * | |
|  * @private | |
|  * @param {*} [value=_.identity] The value to convert to an iteratee. | |
|  * @returns {Function} Returns the iteratee. | |
|  */ | |
| function baseIteratee(value) { | |
|   // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. | |
|   // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. | |
|   if (typeof value == 'function') { | |
|     return value; | |
|   } | |
|   if (value == null) { | |
|     return identity; | |
|   } | |
|   if (typeof value == 'object') { | |
|     return isArray(value) | |
|       ? baseMatchesProperty(value[0], value[1]) | |
|       : baseMatches(value); | |
|   } | |
|   return property(value); | |
| } | |
| 
 | |
| module.exports = baseIteratee;
 |