2012-02-13 23 views
0

我正在使用下劃線和underscore.string,並且與函數.reverse()有衝突,因爲它們都具有相同名稱的函數。如何在鏈內使用underscore.string的reverse()?

爲了避免衝突,我們需要使用_.str這樣的:

_.str.reverse("foobar"); //.reverse("foobar") won't work 

然而,不知道如何使用underscore.string的.reverse()鏈內。

我曾嘗試用下面的:

var something=_.chain("hello world!") 
     .capitalize() 
     //_.str 
     //_.str() 
     //.str 
     //.str() 
     .reverse() 
     .value(); 

但不工作...任何想法?

回答

3

你可以使用_.mixin_.str.reverse功能與另一名添加到下劃線的對象,因此不會與陣列反向衝突:

_.mixin({strReverse: _.str.reverse}); 
var something = _.chain("hello world!").capitalize().strReverse().value(); 
console.log(something); // logs "!dlrow olleH" 

而一個JSFiddle demo,當然。

注意,這樣做strReverse也將在下劃線的對象,否則訪問後:

console.log(_('hello').strReverse()); // logs "olleh" 
+0

好工作,我一定會使用它! – ajax333221 2012-02-13 20:19:20

+0

您還可以結帳blogpost http://edtsech.github.com/blog/2011/11/09/underscore.string-2.0-release/ – edtsech 2012-05-10 09:59:52

0

capitalize()返回的對象必須支持鏈中的下一個方法,但它不支持。認爲你可以以某種方式在鏈中通過名稱引用另一個對象的方法是錯誤的。它根本不會那樣工作。總之,你需要以另一種方式解決這個問題。

+0

我想我需要做像'_.str.reverse(_鏈(「世界你好! 「).capitalize()。value())'...我想避免這種情況,但如果我需要,我會 – ajax333221 2012-02-13 20:12:20

相關問題