code: function getKindOf(value) {
        var result;
  
        if (value == null) {
          result = value === null ? 'Null' : 'Undefined';
        }
        else if (value == context) {
          result = 'Global';
        }
        else if (_.isFunction(value) && isHostType(value, 'prototype')) {
          // A function is assumed of kind "Constructor" if it has its own
          // enumerable prototype properties or doesn't have a `[[Class]]` of Object.
          try {
            if (getClass(value.prototype) == 'Object') {
              for (var key in value.prototype) {
                result = 'Constructor';
                break;
              }
            } else {
              result = 'Constructor';
            }
          } catch(e) {}
        }
        return result || getClass(value) ||
          (result = typeof value, result.charAt(0).toUpperCase() + result.slice(1))
      }
docs: Mimics ES 5.1's `Object.prototype.toString` behavior by returning the
  value's `[[Class]]`, "Null" or "Undefined" as well as other non-spec'ed results
  like "Constructor" and "Global" .
  
  @private
  @param {*} value The value to check.
  @returns {string} Returns a string representing the kind of `value`.