【问题标题】:Underscore using multiple functions in one line下划线在一行中使用多个函数
【发布时间】:2012-01-31 19:39:34
【问题描述】:

我有以下代码:

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

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

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

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

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

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

对不起,我是下划线的新手 :(,感谢任何帮助。

【问题讨论】:

  • 你必须用_()再次包装任何输出,例如return _(str+"a");在第一个函数中,在第二个函数中等效。

标签: javascript underscore.js mixins


【解决方案1】:

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

在 Javascript 中,everything 是一个对象。包括一个字符串。你第一次做对了。 _.chain() 将您的字符串包装在一个对象中,该对象可以向前传递、链式传递,并在最后通过调用 value() 进行解包。

【讨论】:

    【解决方案2】:

    一种选择是用_() 包装返回值并在链的末尾调用.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添加函数

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多