00001 var castPath = require('./_castPath'), 00002 isArguments = require('./isArguments'), 00003 isArray = require('./isArray'), 00004 isIndex = require('./_isIndex'), 00005 isLength = require('./isLength'), 00006 toKey = require('./_toKey'); 00007 00017 function hasPath(object, path, hasFunc) { 00018 path = castPath(path, object); 00019 00020 var index = -1, 00021 length = path.length, 00022 result = false; 00023 00024 while (++index < length) { 00025 var key = toKey(path[index]); 00026 if (!(result = object != null && hasFunc(object, key))) { 00027 break; 00028 } 00029 object = object[key]; 00030 } 00031 if (result || ++index != length) { 00032 return result; 00033 } 00034 length = object == null ? 0 : object.length; 00035 return !!length && isLength(length) && isIndex(key, length) && 00036 (isArray(object) || isArguments(object)); 00037 } 00038 00039 module.exports = hasPath;