1var isPrototype = require('./_isPrototype'),
2    nativeKeys = require('./_nativeKeys');
3
4/** Used for built-in method references. */
5var objectProto = Object.prototype;
6
7/** Used to check objects for own properties. */
8var hasOwnProperty = objectProto.hasOwnProperty;
9
10/**
11 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
12 *
13 * @private
14 * @param {Object} object The object to query.
15 * @returns {Array} Returns the array of property names.
16 */
17function baseKeys(object) {
18  if (!isPrototype(object)) {
19    return nativeKeys(object);
20  }
21  var result = [];
22  for (var key in Object(object)) {
23    if (hasOwnProperty.call(object, key) && key != 'constructor') {
24      result.push(key);
25    }
26  }
27  return result;
28}
29
30module.exports = baseKeys;
31