有没有办法动态调用多个链?
我有一个对象
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 );
答案 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
}