2012-01-31 26 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