1

コードを次のようにしたい:

select("*").where("you='me'").and("me='him'").and("game='nes'");

私はこれだけを持っています:

function select(selector){
    this.where = function(where){
        //Do something with where and select.
        //Add the method AND <---
    }
}

メソッド add をメソッド where に追加する方法がわかりません。

4

3 に答える 3

1

各関数に「return this;」を入れます。底に。したがって、.and() を呼び出すと、「select」である「this」で呼び出されます。iPhoneで申し訳ありませんが、フォーマットはありません!

于 2013-10-29T23:02:12.877 に答える
1

これは「流暢なインターフェース」と呼ばれることもあります

return this各機能から簡単に。

「選択」コンテキストをキャプチャするthis場合は、そのスコープ内の変数をキャプチャし、必要に応じてそれを返します。thisこれは、現在実行中の関数を指すので重要です。

function select(s){

    var that = this;

    this.where = function(condition){
        that.filter(condition);
        return that; //this == select.where
    }

    this.and = function (condition) {
        that.filter(condition);
        return that;
    }

    this.end = function(){
        return that.results(); // or similar depending on the consumed api of course
    }

    return this; // this == select
}
于 2013-10-29T23:03:33.323 に答える
0

それを行う1つの方法:

function select(selector){
    return {where:function(where){
        //do whatever you're doing with where and selector
        return {and:function(whatever){/*do something with whatever*/}}
    }}
}

返された各オブジェクトに追加の関数を追加できます

Jsfiddle: http://jsfiddle.net/markasoftware/78aSa/1/

andwhereが同じオブジェクト上にあるようにしようとしている場合は、代わりに次のようにします。

function select(selector){
    var selectObj=this;
    this.where=function(where){
        //do whatever with where and select
        //now add the and method
        selectObj.and=function(whatever){
            //do stuff with selector, where, and whatever
        }
        return selectObj
    }
    return selectObj;
}

この jsfiddle : http://jsfiddle.net/markasoftware/34BYa/

于 2013-10-29T23:03:04.053 に答える