在一行中使用多个函数的下划线

时间:2012-01-31 19:39:34

标签: javascript underscore.js mixins

我有以下代码:

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

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

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

我想在一行中一起使用多个功能,但我无法工作:

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

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

对不起,我是新来的下划线:(,任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

在Javascript中,一切是一个对象。包括一个字符串。你是第一次做得对。 _.chain()将您的字符串包装在一个对象中,该对象可以通过调用value()在最后传递,链式和解包。

答案 1 :(得分: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()。如果你真的想摆脱它,你必须在String.prototype

中添加功能