code: function getObjectToStringValue(value) {
              var result = objectToString.call(value);
              switch (result) {
                  case '[object Undefined]':
                      return '#Undefined';
                  case '[object Null]':
                      return '#Null';
                  case '[object Object]':
                      return 'Object';
                  case '[object Function]':
                      return 'Function';
                  case '[object String]':
                      return 'String';
                  case '[object Number]':
                      return (value != +value) ? '#NaN' : 'Number';
                  case '[object Array]':
                      return 'Array';
                  case '[object Boolean]':
                      return 'Boolean';
                  case '[object RegExp]':
                      return 'RegExp';
                  case '[object Symbol]':
                      return 'Symbol';
                  case '[object Map]':
                      return 'Map';
                  case '[object WeakMap]':
                      return 'WeakMap';
                  case '[object Set]':
                      return 'Set';
                  case '[object WeakSet]':
                      return 'WeakSet';
                  case '[object Int8Array]':
                      return 'Int8Array';
                  case '[object Uint8Array]':
                      return 'Uint8Array';
                  case '[object Uint8ClampedArray]':
                      return 'Uint8ClampedArray';
                  case '[object Int16Array]':
                      return 'Int16Array';
                  case '[object Uint16Array]':
                      return 'Uint16Array';
                  case '[object Int32Array]':
                      return 'Int32Array';
                  case '[object Uint32Array]':
                      return 'Uint32Array';
                  case '[object Float32Array]':
                      return 'Float32Array';
                  case '[object Float64Array]':
                      return 'Float64Array';
                  case '[object ArrayBuffer]':
                      return 'ArrayBuffer';
                  case '[object DataView]':
                      return 'DataView';
                  case '[object Error]':
                      return 'Error';
                  case '[object Arguments]':
                      return 'Arguments';
                  case '[object JSON]':
                      return 'JSON';
                  case '[object Math]':
                      return 'Math';
                  case '[object Date]':
                      return 'Date';
                  default: //handle the rest (HTML element, future global objects,...)
                      return result.slice(8, -1);
              }
          }
docs: retrieve type of value after calling Object.prototype.toString
  @param value
  @returns {String}