Не знаю как правильнее, но с ходу вижу 2 варианта:
первый, и точно не очень правильный, но возможно самый быстрый и простой
var obj = { a: { b: { c: 3 } }, c: 1, b: 1 };
var str = 'a.b.c';
var value = eval('obj.'+str);
второй выглядит както так
var obj = { a: { b: { c: 3 } }, c: 1, b: 1 };
var value = getPath(obj,'a.c');
function getPath(object, keyPath){
if( typeof keyPath === 'string' ) keyPath = keyPath.split(/\./);
if( !Array.isArray(keyPath) ) return undefined;
let key = keyPath.shift();
if( !key) return object;
if( !object.hasOwnProperty(key) ) return undefined;
if( keyPath.length === 0 ) return object[key];
return getPath(object[key],keyPath);
}