I've made a function to safely traverse deep objects.
var foo = {
bar: {
baz: 1
}
};
function getDeepProp(obj, properties) {
if (typeof properties === 'string')
properties = properties.split('.');
if (typeof obj === 'undefined')
return;
if (!properties.length)
return obj;
return getDeepProp(obj[properties[0]], properties.slice(1));
}
console.log(getDeepProp(foo, 'bar.baz')); // 1
console.log(getDeepProp(foo, 'baz.baz')); // undefined
// The function was created to avoid exceptions like:
console.log(foo.baz.baz); // Uncaught TypeError: Cannot read property 'baz' of undefined
Please suggest possible improvements.