2012-01-31 25 views
1

我有以下代码:下划线使用多种功能于一体的在线

function doSomething(str){ 
    return str+="a"; 
} 

function anotherFunction(str){ 
    return str+="b"; 
} 

_.mixin({ 
    doSomething:doSomething, 
    anotherFunction:anotherFunction 
}); 

我想使用多个功能于一身行在一起,但我不能管理工作:

var output=_("startingtext").doSomething().anotherFunction();

我设法使用_.chain工作,但我不确定是否应该使用链,因为在他们的example他们使用的对象和东西,所以我真的怀疑这是字符串操作的方式。

对不起,我是新来强调:(任何帮助表示赞赏

+0

你将不得不用_()重新包装任何输出,例如'return _(str +“a”);'在第一个函数中,在第二个函数中等价。 – Clemens 2012-01-31 19:54:42

回答

1

_.chain()正是要走的路。

在Javascript中,的一切是一个对象。包括一个字符串。你第一次做对了。 _.chain()将你的字符串封装在一个对象中,该对象可以向前传递,链式样,并在调用value()的末尾解压缩。

0

的办法是用_()包裹的返回值,并在链的末端调用.value()

function a(v) { 
    return _(v + 'a'); 
} 

function b(v) { 
    return _(v + 'b'); 
} 

_.mixin({a:a, b:b}); 
_('some-text').a().b().value(); // returns some-textab 

不是我最喜欢的选择,虽然。

this question接受的答案有一个选择,但它仍然需要在最后调用.value()。如果你真的想摆脱它,你会^ h将功能添加到String.prototype

+0

这是你最喜欢的吗? – mithril333221 2012-01-31 20:04:54