* Checks if `value` is a property name and not a property path. * * @private * @param {*} value The value to check. * @param {Object} [object] The object to query keys on. * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
(value, object)
| 629 | * @returns {boolean} Returns `true` if `value` is a property name, else `false`. |
| 630 | */ |
| 631 | function isKey(value, object) { |
| 632 | if (isArray(value)) { |
| 633 | return false; |
| 634 | } |
| 635 | var type = typeof value; |
| 636 | if ( |
| 637 | type == 'number' || |
| 638 | type == 'symbol' || |
| 639 | type == 'boolean' || |
| 640 | value == null || |
| 641 | isSymbol(value) |
| 642 | ) { |
| 643 | return true; |
| 644 | } |
| 645 | return ( |
| 646 | reIsPlainProp.test(value) || |
| 647 | !reIsDeepProp.test(value) || |
| 648 | (object != null && value in Object(object)) |
| 649 | ); |
| 650 | } |
| 651 | |
| 652 | /** |
| 653 | * Checks if `value` is suitable for use as unique object key. |