【问题标题】:How can I chain my method calls?如何链接我的方法调用?
【发布时间】:2014-10-03 01:59:44
【问题描述】:

我有一个对象:

var mubsisapi = {
        step1   : function(){alert("a")}, 
        step2   : function(){alert("b")}
    }

$.extend(false, mubsisapi)
mubsisapi.step1().step2();

是给step1(),但不是给step2()step2() 不发出警报。我该怎么做?

【问题讨论】:

  • 已编辑以删除对您未使用的 JSON 的引用。

标签: javascript jquery method-chaining


【解决方案1】:

不是 JSON,而是 javascript 对象。不是fluent,但可以是:

var mubsisapi = {
        step1   : function(){alert("a"); return this;}, 
        step2   : function(){alert("b"); return this;}
    }

$.extend(false, mubsisapi)
mubsisapi.step1().step2();

【讨论】:

    【解决方案2】:

    如果你想链接它,你需要从函数中返回this

    【讨论】:

      【解决方案3】:

      是的,您的对象应该如下所示:

      var mubsisapi = {
          step1   : function(){alert("a"); return this; }, 
          step2   : function(){alert("b"); return this; }
      }
      

      返回自身以允许链接。

      【讨论】:

        【解决方案4】:
        var mubsisapi = {
                step1   : function(){alert("a"); return mubsisapi;}, 
                step2   : function(){alert("b"); return mubsisapi;}
            }
        

        【讨论】:

          【解决方案5】:

          你不能链接你的函数调用。您要么必须单独调用它们:

          mubsisapi.step1();
          mubsisapi.step2();
          

          或者您可以更改您的 step1 功能,以便将它们链接起来:

          var mubsisapi = {
                  step1   : function(){alert("a"); return mubsisapi;}, 
                  step2   : function(){alert("b")}
              }
          
          $.extend(false, mubsisapi)
          mubsisapi.step1().step2();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-27
            • 2017-01-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-08
            • 1970-01-01
            相关资源
            最近更新 更多