How can I chain my method calls?

2019-01-18 23:34发布

问题:

I have an object:

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

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

It is give step1() but not give step2(). step2() does not give an alert. How can I do this?

回答1:

Not JSON, but javascript object. It's not fluent, but it can be:

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

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


回答2:

You need to return this from the function if you want to chain it.



回答3:

Yes, your object should look like this:

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

returning itself to allow chaining.



回答4:

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


回答5:

You cannot chain your function calls. You either have to call them separately:

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

or you can change your step1 function so you can chain them:

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

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