Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / globule / node_modules / lodash / _baseKeysIn.js
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;