1 var isArray = require('./isArray');
3 /** Used to match property names within property paths. */
4 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
5 reIsPlainProp = /^\w*$/;
8 * Checks if `value` is a property name and not a property path.
11 * @param {*} value The value to check.
12 * @param {Object} [object] The object to query keys on.
13 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
15 function isKey(value, object) {
16 if (typeof value == 'number') {
19 return !isArray(value) &&
20 (reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
21 (object != null && value in Object(object)));
24 module.exports = isKey;