2

このように一緒にアクションを実行する JavaScript の関数のリストを作成するにはどうすればよいですか?

申し訳ありませんが、それが何と呼ばれているのかわかりませんが、クラスを追加するよりも何かを選択したときにJqueryのようなもので、同時に他のことを行うこともできます!

例えば:

list.getAll().count()

または

list.getAll().removeLast().dosomthingElse().count()

私は多くの方法を試しましたが、残念ながら、私が望むものではない関数クラスを拡張しない限り、それを機能させることはできません!

4

2 に答える 2

5

これは連鎖法と呼ばれます。thisメソッドからオブジェクト参照 ( ) を返すだけです。

List.prototype.getAll = function() {
  // do something
  return this;
}

または、メソッドが新しい結果を生成する場合は、同じ型のオブジェクトを作成し、それを返します。

List.prototype.removeLast = function() {
  var items = this.items.slice(0, items.length - 1);
  return new List(items);
}

(別のタイプのオブジェクトを作成することもできます。たとえば、メソッドでリストのすべての項目をtoCollection含む新しいオブジェクトを作成し、それを返すことができます。)Collection

于 2012-10-21T09:37:33.147 に答える
2

メソッドを定義する必要があります。これは、オブジェクトにアタッチされた関数です。

次のように定義します。

window.myMethod = function(){
    alert(this) ;
}

オブジェクトは である必要はありませんwindow。最後に別のメソッドをチェーンするには、 を使用しますreturn this

window.myMethod = function(){
    alert(this) ;
    return this ;
}

window.myOtherMethod = function(){
    console.log(this) ;
    return this ;
}

window.myMethod().myOtherMethod() ;

windowこれで、2 番目のメソッドが最初のオブジェクトから元のオブジェクト (この例では) を受け取るため、一連のメソッドを使用できます。

于 2012-10-21T09:39:13.750 に答える