动态调用多个链

时间:2015-10-01 09:36:12

标签: javascript function for-loop chain

有没有办法动态调用多个链?

我有一个对象 var object = { key1: 'value1', key2: 'value1', key3: 'value3' };

我有一个可以接受多个链method().chain1( arg1 ).chain2( arg2 ).chain3( arg3 )...

的方法

现在我想动态调用链方法,多次为对象属性,对象的键是方法链的名称,值是我想要发送到链中的参数。

我的目标是在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  );

1 个答案:

答案 0 :(得分: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
}