¿Cómo funciona el encadenamiento de objetos / funciones básicas en javascript?

Estoy tratando de entender los principios de hacer el encadenamiento de funciones de estilo JQuery directamente en mi cabeza. Con esto quiero decir:

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

He conseguido un ejemplo para trabajar, mientras que otro no. Voy a publicar esos a continuación. Siempre quiero aprender los principios básicos del principio de cómo funciona algo para poder construir sobre él. Hasta ahora, solo he tenido una comprensión superficial y vaga de cómo funciona el encadenamiento y me estoy encontrando con errores que no puedo solucionar de manera inteligente.

Lo que yo sé:

Las funciones tienen que devolverse ellas mismas, alias "devolver esto";Las funciones chaables deben residir en una función principal, también conocida como jQuery, .css () es un método secundario de jQuery (), por lo tanto jQuery (). Css ();La función principal debe volver a sí misma o a una nueva instancia de sí misma.

Este ejemplo funcionó:

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

Pero este no lo hace:

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

Respuestas a la pregunta(5)

Su respuesta a la pregunta