time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_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;