2015-10-01 8 views
0

Есть ли способ динамического вызова нескольких цепочек?Динамически вызывать несколько цепей

У меня есть объект var object = { key1: 'value1', key2: 'value1', key3: 'value3' };

и у меня есть метод, который может принимать несколько цепей method().chain1(arg1).chain2(arg2).chain3(arg3)...

Теперь я хочу, чтобы динамически вызвать метод цепи, много раз для свойств объекта, ключи object - это имя цепочки методов, а значение - его аргументы, которые я хочу отправить в цепочку.

Моя цель вызывает этот пример внизу, в цикле for или в функции, которая делает это возможным.

например:

var object = { key1: 'value1', key2: 'value1', key3: 'value3' }; 

var a = Object.keys(object)[0], 
    b = Object.keys(object)[1], 
    c = Object.keys(object)[2]; 

method[ a ](object.key1)[ b ](object.key2)[ c ](object.key3 ); 

ответ

0

Существует фундаментальный изъян в вашем проекте, если только ваши змеевидных вызовы не являются порядка независимыми: свойства объекта не имеют определенный порядок (хотя на практике они делают, это не определено в язык).

Но если изменить структуру данных немного вы можете сделать это правильный путь:

var chain = [{f: 'key1', arg: 'value1'}, {f: 'key2', arg: 'value1'}, {f: 'key3', arg: 'value3'}] 

function chainCall(chain) 
{ 
    var obj = method 
    for(var call of chain) { 
     obj = obj[call.f](call.arg) 
    } 
    return obj 
} 
Смежные вопросы