index.js
function typeOf(value, options) {
            if (value === undefined) return '#Undefined';
            if (value === null) return '#Null';
            if (options !== 'forceObjectToString') {
                var constructor = getConstructor(value);
                if (constructor !== null) {
                    var type = getFunctionName(constructor);
                    if (type === 'Object') {
                        return getObjectToStringValue(value);
                    }
                    return (type === 'Number' && value != +value) ? '#NaN' : type;
                }
            }
            return getObjectToStringValue(value);
        }
function typeOf(value, options) {
            if (value === undefined) return '#Undefined';
            if (value === null) return '#Null';
            if (options !== 'forceObjectToString') {
                var constructor = getConstructor(value);
                if (constructor !== null) {
                    var type = getFunctionName(constructor);
                    if (type === 'Object') {
                        return getObjectToStringValue(value);
                    }
                    return (type === 'Number' && value != +value) ? '#NaN' : type;
                }
            }
            return getObjectToStringValue(value);
        }
function typeOf ( value , options ) { if ( value === undefined ) return '#Undefined' ; if ( value === null ) return '#Null' ; if ( options !== 'forceObjectToString' ) { var constructor = getConstructor ( value ) ; if ( constructor !== null ) { var type = getFunctionName ( constructor ) ; if ( type === 'Object' ) { return getObjectToStringValue ( value ) ; } return ( type === 'Number' && value != + value ) ? '#NaN' : type ; } } return getObjectToStringValue ( value ) ; }
return the constructor name if "defined" and "valid" of the value, otherwise return Object.prototype.toString
@param {*} value
@returns {String}
return the constructor name if defined and valid of the value otherwise return Object . prototype . toString