2011-09-27 6 views
10

私はオブジェクトを持っている:メソッド呼び出しをどのようにチェーンできますか?

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

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

それはstep2()を与えるstep1()を与えることはありませんです。 step2()はアラートを表示しません。これどうやってするの?

+0

編集して、使用していないJSON ...への参照を削除します。 – Quentin

答えて

15

JSONではなくjavascriptオブジェクトです。それはfluentはありませんが、それはすることができます:あなたは、あなたの関数呼び出しをチェーンすることはできません

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

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

連鎖したい場合は、関数からthisを返す必要があります。

+0

+1私にそれを打つ:) – AlienWebguy

+0

+1、私は今日は遅すぎる – Joe

1

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

またはあなたがそれらチェーンにすることができますので、あなたのSTEP1の機能を変更することができます:あなたはそれらを個別に呼び出す必要がありますいずれか

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

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

間違って:)あなたがdownvotedする前に削除します。 – AlienWebguy

+0

みなさんありがとう –

3

はい、あなたのオブジェクトは次のようになります。

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

は連鎖を許可するために自身を返します。

2
var mubsisapi = { 
     step1 : function(){alert("a"); return mubsisapi;}, 
     step2 : function(){alert("b"); return mubsisapi;} 
    } 
関連する問題