import isObject from '../isObject.js' import isPrototype from './isPrototype.js' import nativeKeysIn from './nativeKeysIn.js' /** Used to check objects for own properties. */ const hasOwnProperty = Object.prototype.hasOwnProperty /** * The base implementation of `keysIn` 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 baseKeysIn(object) { if (!isObject(object)) { return nativeKeysIn(object) } const isProto = isPrototype(object) const result = [] for (const key in object) { if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { result.push(key) } } return result } export default baseKeysIn