0

コレクションの「クラス」内に存在する filter() メソッドの背後にあるメカニズムを誰かが説明できますか? このメソッドのバックボーン API は、次の実装例 (Todo 演習 @ http://addyosmani.github.io/backbone-fundamentals/から取得) と矛盾しているように見えます。

completed: function() {
    return this.filter(function( todo ) {
        return todo.get('completed');
    });
}

このコード スニペットは、'completed' プロパティに "true" が含まれるモデル オブジェクトの配列を生成します。ただし、この関数からオブジェクトの配列がどのように返されるかを理解することはできません

4

4 に答える 4

0
return todo.get('completed');

基本的にこれに該当します

return todo.get('completed') === true ;

したがってtodo Models、コレクション全体の属性complete内のすべてがtrueに設定されている場合、最も内側の return ステートメントから返されます。

そして、最も外側の return は、フィルター関数によって条件が満たされたすべてのモデルのコレクションを返します..

これは次のように簡単に記述できます。

completed: function() {
    var filteredModels =  this.filter(function( todo ) {
        return todo.get('completed');
    });

    return filteredModels;
}
于 2013-05-15T04:18:27.980 に答える