1 var isArguments = require('./isArguments'),
2 isArray = require('./isArray'),
3 isArrayLike = require('./isArrayLike'),
4 isFunction = require('./isFunction'),
5 isString = require('./isString');
7 /** Used for built-in method references. */
8 var objectProto = Object.prototype;
10 /** Used to check objects for own properties. */
11 var hasOwnProperty = objectProto.hasOwnProperty;
14 * Checks if `value` is empty. A value is considered empty unless it's an
15 * `arguments` object, array, string, or jQuery-like collection with a length
16 * greater than `0` or an object with own enumerable properties.
21 * @param {Array|Object|string} value The value to inspect.
22 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
34 * _.isEmpty([1, 2, 3]);
37 * _.isEmpty({ 'a': 1 });
40 function isEmpty(value) {
41 if (isArrayLike(value) &&
42 (isArray(value) || isString(value) || isFunction(value.splice) || isArguments(value))) {
45 for (var key in value) {
46 if (hasOwnProperty.call(value, key)) {
53 module.exports = isEmpty;