libs/lodash.js
function shimKeys(object) {
      var keyIndex,
          index = -1,
          props = keysIn(object),
          length = props.length,
          objLength = length && object.length,
          maxIndex = objLength - 1,
          result = [];

      var allowIndexes = typeof objLength == 'number' && objLength > 0 &&
        (isArray(object) || (support.nonEnumArgs && isArguments(object)));

      while (++index < length) {
        var key = props[index];
        if ((allowIndexes && (keyIndex = +key, keyIndex > -1 && keyIndex <= maxIndex && keyIndex % 1 == 0)) ||
            hasOwnProperty.call(object, key)) {
          result.push(key);
        }
      }
      return result;
    }
function shimKeys(object) {
      var keyIndex,
          index = -1,
          props = keysIn(object),
          length = props.length,
          objLength = length && object.length,
          maxIndex = objLength - 1,
          result = [];

      var allowIndexes = typeof objLength == 'number' && objLength > 0 &&
        (isArray(object) || (support.nonEnumArgs && isArguments(object)));

      while (++index < length) {
        var key = props[index];
        if ((allowIndexes && (keyIndex = +key, keyIndex > -1 && keyIndex <= maxIndex && keyIndex % 1 == 0)) ||
            hasOwnProperty.call(object, key)) {
          result.push(key);
        }
      }
      return result;
    }
function shimKeys ( object ) { var keyIndex , index = - 1 , props = keysIn ( object ) , length = props . length , objLength = length && object . length , maxIndex = objLength - 1 , result = [ ] ; var allowIndexes = typeof objLength == 'number' && objLength > 0 && ( isArray ( object ) || ( support . nonEnumArgs && isArguments ( object ) ) ) ; while ( ++ index < length ) { var key = props [ index ] ; if ( ( allowIndexes && ( keyIndex = + key , keyIndex > - 1 && keyIndex <= maxIndex && keyIndex % 1 == 0 ) ) || hasOwnProperty . call ( object , key ) ) { result . push ( key ) ; } } return result ; }
A fallback implementation of `Object.keys` which creates an array of the
own enumerable property names of `object`.

@private
@param {Object} object The object to inspect.
@returns {Array} Returns the array of property names.
A fallback implementation of Object . keys which creates an array of the own enumerable property names of object .