2012-02-13 5 views
0

Я работаю как с подчеркиванием, так и с подчеркиванием.string, и есть конфликт с функцией .reverse(), так как обе имеют функцию с тем же именем.Как использовать обратную ссылку() внутри underscore.string внутри цепочки?

Чтобы избежать конфликта, мы должны использовать _.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

+0

Также вы можете зарегистрировать блог-блог http://edtsech.github.com/blog/2011/11/09/underscore.string-2.0-release/ – edtsech

0

Объект, возвращенный capitalize(), должен поддерживать следующий метод в цепочке, но это не так. Ошибочно думать, что вы можете каким-то образом ссылаться на метод другого объекта по имени внутри цепочки. Это просто не работает. Короче говоря, вам нужно решить этот другой путь.

+0

Я думаю, мне нужно будет сделать это как '_.str.reverse (_ цепь (" привет мир.! ") .capitalize(). value())' ... Я хотел избежать этого, но если мне нужно, я буду – ajax333221