Как работает базовое связывание объектов / функций в javascript?

Я пытаюсь понять принципы создания цепочек функций в стиле jQuery прямо в моей голове. Под этим я подразумеваю:

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

Я получил один пример для работы, а другой нет. Я опубликую их ниже. Я всегда хочу изучить основы первого принципа того, как что-то работает, чтобы я мог построить на нем верх. До сих пор у меня было только поверхностное и слабое понимание того, как работает цепочка, и я сталкиваюсь с ошибками, которые я не могу устранить с умом.

Что я знаю:

Functions have to return themselves, aka "return this;" Chainable functions must reside in a parent function, aka in jQuery, .css() is a sub method of jQuery(), hence jQuery().css(); The parent function should either return itself or a new instance of itself.

Этот пример работал:

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

Но это не так:

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

Ответы на вопрос(5)

Ваш ответ на вопрос