1 var isArrayLike = require('../internal/isArrayLike'),
2 isObjectLike = require('../internal/isObjectLike');
4 /** Used for native method references. */
5 var objectProto = Object.prototype;
7 /** Used to check objects for own properties. */
8 var hasOwnProperty = objectProto.hasOwnProperty;
10 /** Native method references. */
11 var propertyIsEnumerable = objectProto.propertyIsEnumerable;
14 * Checks if `value` is classified as an `arguments` object.
19 * @param {*} value The value to check.
20 * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
23 * _.isArguments(function() { return arguments; }());
26 * _.isArguments([1, 2, 3]);
29 function isArguments(value) {
30 return isObjectLike(value) && isArrayLike(value) &&
31 hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');
34 module.exports = isArguments;