没有,没有办法,如果函数调用看起来相同的,因为下一个链接的调用尚未发生,并解释不为您提供任何证据,是否有检测一个给定的方法是在尾部位置另一个链接调用即将到来。
也许你认为是你正在寻找的线索,一个可选的第二个参数:
var some = g.f(arg1).f(arg2).f(arg3, "end");
然后,你f()
功能也只是检查,看看是否第二个参数存在并且有适当的价值,如果是的话,它可以执行尾部操作。
或者,你可以做一个稍微不同的版本的f()
称为fTail()
(或任何你想将它命名):
var some = g.f(arg1).f(arg2).fTail(arg3);
fTail()
看起来是这样的:
xxx.prototype.fTail = function() {
var retVal = this.f.apply(this, arguments);
// now do your tail operations here
return retVal;
};
正如你所提出的,我想我会用自个参数的数组去在似乎解决您的所有问题,易于使用,并将表现良好:
var some = g.f([arg1, arg2, arg3], fn);
谢谢,它有帮助!我试图实现一个活净有线数据结构,可随时看到我的github:hefeust/retiare如果你会使它的想法.. 我试图决定: g.relation()。角色(role1上)。角色(基于role2)。在( '链接',函数(){...}) VS g.relation([角色],[处理]) 也许是第二种方法(不链接,完全在数组中指定)将在考虑您的答案后获胜。 关于 – 2015-02-06 09:24:16
@HefeustCORTES - 使用单个方法调用接受一系列项目,与使用N个链接函数调用相比,使用它的代码更少,而且执行速度更快,当然,您会知道何时处理完阵列中的最后一个。这并不意味着链在许多情况下(它是)没有用处,但通常不会一遍又一遍地使用相同的方法。 – jfriend00 2015-02-06 09:31:45