UNPKG

@feugene/mu

Version:

Helpful TS utilities without dependencies

49 lines (42 loc) 1.13 kB
/** Used for built-in method references. */ import baseGetTag from '~/internal/base/baseGetTag' const objectProto = Object.prototype /** Used to check objects for own properties. */ const hasOwnProperty = objectProto.hasOwnProperty /** Built-in value references. */ const propertyIsEnumerable = objectProto.propertyIsEnumerable /** `Object#toString` result references. */ const argumentsTag = '[object Arguments]' /** * The base implementation of `isArguments`. * * @private */ const baseIsArguments = (value: any) => { return value !== null && typeof value === 'object' && baseGetTag(value) === argumentsTag } /** * Checks if `value` is likely an `arguments` object. * * @example * * isArguments(function() { return arguments; }()); * // => true * * isArguments([1, 2, 3]); * // => false */ export default baseIsArguments( (function () { return arguments })() ) ? baseIsArguments : function (value: any) { return ( value !== null && typeof value === 'object' && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee') ) }