| var isPrototype = require('./_isPrototype'), |
| nativeKeys = require('./_nativeKeys'); |
| |
| /** Used for built-in method references. */ |
| var objectProto = Object.prototype; |
| |
| /** Used to check objects for own properties. */ |
| var hasOwnProperty = objectProto.hasOwnProperty; |
| |
| /** |
| * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. |
| * |
| * @private |
| * @param {Object} object The object to query. |
| * @returns {Array} Returns the array of property names. |
| */ |
| function baseKeys(object) { |
| if (!isPrototype(object)) { |
| return nativeKeys(object); |
| } |
| var result = []; |
| for (var key in Object(object)) { |
| if (hasOwnProperty.call(object, key) && key != 'constructor') { |
| result.push(key); |
| } |
| } |
| return result; |
| } |
| |
| module.exports = baseKeys; |