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