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

ответ

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() в конце. Если вы действительно хотите, чтобы избавиться от него, вы ч ave, чтобы добавить функции к String.prototype

+0

, который является вашим любимым? – mithril333221