Skip to content

Instantly share code, notes, and snippets.

@Reshetnyak
Last active February 15, 2016 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Reshetnyak/da24411150b7e94c7f07 to your computer and use it in GitHub Desktop.
Save Reshetnyak/da24411150b7e94c7f07 to your computer and use it in GitHub Desktop.
Get object property if it exist. Nesting depth doesn't matter
/**
* Get object property if it exist.
* @param {string} propStr - property of object with any level of nesting. 'person.address.home.floor'
* @returns {*} needed property
*/
function getPropIfExist(propStr){
var props = propStr.split('.');
var lastIndex = props.length - 1;
var i = 0;
return getProp(window, props[0]);
/**
* Try to get object property recursively
* @param {*} obj - object to check for property existing
* @param {string} prop - needed property name
* @returns {*} needed property or undefined
*/
function getProp(obj, prop){
if ( typeof obj === 'object' || typeof obj === 'function' ){
if (i < lastIndex){
i += 1;
return getProp( obj[prop], props[i] );
} else {
return obj[prop]
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment