00001 var isArray = require('./isArray'), 00002 isSymbol = require('./isSymbol'); 00003 00005 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 00006 reIsPlainProp = /^\w*$/; 00007 00016 function isKey(value, object) { 00017 if (isArray(value)) { 00018 return false; 00019 } 00020 var type = typeof value; 00021 if (type == 'number' || type == 'symbol' || type == 'boolean' || 00022 value == null || isSymbol(value)) { 00023 return true; 00024 } 00025 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || 00026 (object != null && value in Object(object)); 00027 } 00028 00029 module.exports = isKey;