Как вызвать метод js объекта, если список методов храниться в string?

Есть большой объект
var Febox = {
    init: function () { ... },
    module: {
        product: { 
            list: function () { ... },
            tree: function () {
                var method = {};
                
                method.update = function () { ... }; // Нужный метод
                method.unlink = function () { ... };
                
                return method;
            }
        }
    },
    event: function (e) {
        
        $('body').on('click', '.click-handle', function (){
            var method = $(this).data('handle'); // Объект который нужен, Febox.module.product.tree.tree.update
            
            // Вот тут надо вызвать необходимый объект
        });
        
        
    }
};


На кнопках приложения, стоят обработчики с необходимым им методов объекта Febox, что то типа Febox.module.product.tree.tree.update(), т.е зарание неизвестно какой именно объект нужен, быть может даже Febox.init()

Как вызвать объект, если у меня строка с путем до объекта?
Если нахождение объекта известно, то можно вызвать так
Febox['module']['product']['tree']['update']

Но у меня не известен путь.
  • Вопрос задан
  • 2805 просмотров
Пригласить эксперта
Ответы на вопрос 3
window[method]functionName(arguments);
Ответ написан
Комментировать
smanioso
@smanioso
Отмечайте ответы на свои вопросы!
Если
method == "Febox.module.product.tree.tree.update"
то можно что то типа
var path = method.split('.');
var rv = window;
while (path.length > 0)
  rv = rv[path.shift()];
rv();


Хотя что мешает писать просто onclick='Foo.bar()' по старинке?
Ответ написан
@M-ka
frontend присматривающийся к ror
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы