Как я могу связать свои вызовы методов? - PullRequest
10 голосов
/ 27 сентября 2011

У меня есть объект:

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

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

Это дает step1(), но не дает step2().step2() не дает оповещения.Как я могу это сделать?

Ответы [ 5 ]

16 голосов
/ 27 сентября 2011

Не JSON, а объект javascript.Это не свободно , но это может быть:

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

$.extend(false, mubsisapi)
mubsisapi.step1().step2();
9 голосов
/ 27 сентября 2011

Вам нужно вернуть this из функции, если вы хотите связать ее.

3 голосов
/ 27 сентября 2011

Да, ваш объект должен выглядеть так:

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

возвращаясь, чтобы разрешить цепочку.

2 голосов
/ 27 сентября 2011
var mubsisapi = {
        step1   : function(){alert("a"); return mubsisapi;}, 
        step2   : function(){alert("b"); return mubsisapi;}
    }
1 голос
/ 27 сентября 2011

Вы не можете связать свои вызовы функций. Вы должны позвонить им по отдельности:

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

или вы можете изменить функцию step1, чтобы связать их:

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

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