code: 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);
          }
docs: return the constructor name if "defined" and "valid" of the value, otherwise return Object.prototype.toString
  @param {*} value
  @returns {String}