Достать значение свойства объекта по пути можно через метод get из lodash. Но конкретно в данном случае есть проблемы.
Если глобальный скоп, то с использованием var вместо let & const можно быстро решить.
var object = {
method: {
method: () => console.log('123123')
}
}
let string = 'object.method.method'
const method = _.get(window, string);
Подробнее о
get -
https://lodash.com/docs/4.17.15#get
Если локальный скоп, то можно сохранить созданный объект в this и потом через него обращаться:
function fn() {
const object = {
method: {
method: () => console.log('123123')
}
}
this.object = object;
let string = 'object.method.method'
const method = _.get(this, string);
}
Если lodash не хочется юзать, то вот код:
function getNestedValue(object, path) {
path = path.replace(/\[(\w+)\]/g, '.$1'); // конвертация индексов в свойства
path = path.replace(/^\./, ''); // удаление лишних точек
const parts = path.split('.');
for (const key of parts) {
if (typeof object === 'object' && !(key in object)) return;
object = object[key];
}
return object;
}
console.log(getNestedValue(window, 'object.method.method'));