Jak działa podstawowe łączenie obiektów / funkcji w javascript?

Staram się zrozumieć zasady wykonywania funkcji łączenia w stylu jQuery prosto w mojej głowie. Mam na myśli:

var e = f1('test').f2().f3();

Mam jeden przykład do pracy, podczas gdy inny nie. Opublikuję te poniżej. Zawsze chcę nauczyć się podstawowych zasad działania czegoś, dzięki czemu mogę na nim budować. Do tej pory miałem tylko pobieżne i luźne zrozumienie tego, jak działa łańcuch, i wpadam na błędy, których nie potrafię rozwiązać inteligentnie.

Co wiem:

Funkcje muszą powrócić same, aka „zwróć to”;Funkcje łańcuchowe muszą znajdować się w funkcji nadrzędnej, aka w jQuery, .css () jest pod-metodą jQuery (), stąd jQuery (). Css ();Funkcja nadrzędna powinna zwracać się sama lub sama nowa instancja.

Ten przykład zadziałał:

var one = function(num){
    this.oldnum = num;

    this.add = function(){
        this.oldnum++;
        return this;
    }

    if(this instanceof one){
        return this.one;    
    }else{
        return new one(num);    
    }
}
var test = one(1).add().add();

Ale ten nie:

var gmap = function(){

    this.add = function(){
        alert('add');

        return this;    
    }   

    if(this instanceof gmap) {
        return this.gmap;   
    } else{
        return new gmap();  
    }

}
var test = gmap.add();

questionAnswers(5)

yourAnswerToTheQuestion