Como o encadeamento básico de objetos / funções funciona em javascript?

Eu estou tentando obter os princípios de fazer o encadeamento de funções no estilo jQuery direto na minha cabeça. Por isso quero dizer:

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

Eu tenho um exemplo para trabalhar, enquanto outro não. Vou postar as abaixo. Eu sempre quero aprender os primeiros princípios fundamentais de como algo funciona para que eu possa construir em cima dele. Até agora, eu só tive uma compreensão superficial e frouxa de como funciona o encadeamento e estou me deparando com erros que não posso solucionar de maneira inteligente.

O que eu sei:

As funções devem retornar a si mesmas, também conhecidas como "retornar isso";Funções encadernáveis ​​devem residir em uma função pai, também conhecida como jQuery, .css () é um método sub de jQuery (), portanto jQuery (). Css ();A função pai deve retornar ou uma nova instância de si mesmo.

Este exemplo funcionou:

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();

Mas este não:

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