2012-01-09 8 views
3

のようなJavaScriptオブジェクトでchainabilityを有効にし、このコードを見て:私はchainabilityについての質問をしたjQueryの

document.getElementById('menu').fadeIn(200, function(){ //callback }); 

私はjQueryのせずにこれを行うことができますどのように?

注:名前フェードイン()フェードアウト()例えば、jQueryの機能が存在しません。

+1

jQueryのような独自の(単純化または拡張された)メカニズムを実装する必要があります。別のアプローチは、PrototypeライブラリのようなDOM拡張を使うことです。 – Pointy

答えて

5

「メソッドチェーンは、オブジェクト指向プログラミング言語で呼び出し 複数のメソッドを呼び出すための一般的な技術である。各メソッドは、コールがで一緒 を連鎖することを可能にする、 オブジェクト(おそらく現在のオブジェクト自体)を返します方法のチェーンはまた、 メソッドの増加量のために列車の難破船として知られている 別の行の後に。

//Create an object which contains functions 
var obj={ 
     alert : function(txt){ 
       alert(txt); 
       return this //return itself 
     }, 
     confirm :function(txt){ 
       confirm(txt); 
       return this //return itself 
     } 
} 

//Now you can chain as much as you want 
obj.alert("This").alert("is").confirm("called").alert("chaining."); 

出典:

+0

それは簡単だったとは気づかなかった。 – 472084

+0

私はオブジェクトを作りたくない。私はdocument.getElementByIdのための新しいメソッドを作成したい私はここで何か[リンク](http://james.padolsey.com/javascript/prototypal-chainability/)を読んだが、私は方法を "添付"できませんオブジェクトに。 –

1

あなたのメソッドが含まれているオブジェクトを返します(そして、時には、いくつかのリターンデータを管理するためのコールバックメカニズムを提供)する必要がchainabilityを許可するには:

var chainable ={ 
     doSomething : function(input, callback){ 
      //do something with the input 
      var output = input; 
      if (callback && typeof(callback) === "function") { 
       callback(output); 
      } 
      return this; 
     } 
} 

    chainable.doSomething('test', function(data) { 
     alert(data); 
    }) 
    .doSomething('anotherString'); 
+0

返事をありがとう。私はコールバック管理を理解している –

関連する問題