1var baseMatches = require('./_baseMatches'), 2 baseMatchesProperty = require('./_baseMatchesProperty'), 3 identity = require('./identity'), 4 isArray = require('./isArray'), 5 property = require('./property'); 6 7/** 8 * The base implementation of `_.iteratee`. 9 * 10 * @private 11 * @param {*} [value=_.identity] The value to convert to an iteratee. 12 * @returns {Function} Returns the iteratee. 13 */ 14function baseIteratee(value) { 15 // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. 16 // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. 17 if (typeof value == 'function') { 18 return value; 19 } 20 if (value == null) { 21 return identity; 22 } 23 if (typeof value == 'object') { 24 return isArray(value) 25 ? baseMatchesProperty(value[0], value[1]) 26 : baseMatches(value); 27 } 28 return property(value); 29} 30 31module.exports = baseIteratee; 32