Wie funktioniert basic-Objekt/Funktion verketten arbeiten in javascript?

Ich versuche, die Prinzipien zu tun, die jQuery-style-Funktion chaining gerade in meinem Kopf. Damit meine ich:

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

Ich habe ein Beispiel, um zu arbeiten, während der andere nicht. Ich poste diesen unten. Ich will immer lernen, das erste Prinzip die Grundlagen, wie etwas funktioniert, so dass ich darauf aufbauen kann. Bis jetzt, ich hatte nur eine oberflächliche und lose Verständnis von, wie die Verkettung funktioniert und ich bin mit in die bugs die ich nicht beheben intelligent.

Was ich weiß:

  1. Funktionen zurückkehren müssen, sich selbst, aka "return this;"
  2. Verkettbare Funktionen müssen sich in einer übergeordneten Funktion, aka in jQuery, .css() ist eine sub-Methode von jQuery(), damit jQuery().css();
  3. Der übergeordneten Funktion sollte entweder sich selbst zurückgeben oder eine neue Instanz von sich selbst.

Diesem Beispiel gearbeitet:

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

Aber dieses nicht:

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();
Die Funktionen, die nicht zurückkehren selbst, sind Sie wieder das Objekt, das unterstützt die Methoden, die Sie die Verkettung auf. In der jQuery-Fall, es ist der Knoten betrieben wird, auf.
Haben Sie jede Funktion beenden mit einem return this;.
Ich weiß, aber wie?
Für einen Weg, um bestehende Methoden verkettbare, Sie könnten versuchen, diese: stackoverflow.com/a/15797662/162793
Verwandte: wie funktioniert jquery Verkettung der Arbeit?

InformationsquelleAutor Geuis | 2009-07-08

Schreibe einen Kommentar