Duke324: Javascript Objekte verschachteln

Hallo ist es möglich in Javascript Funktionen zu verschachteln? Ich habe hier unten mal ein Beispiel angehängt wie ich mir das dachte. (Funktioniert natürlich nicht... ;)

  
	function cvs(id){  
                //Hier passiert ganz viel abgefahrenes zeugs...  
			  
		this.row = function(i){	  
			alert("die ganze tabellen reihe");  
  
                        this.col = function(j){  
                               alert("und jetzt nur ein Element");  
                        }  
		  
		}  
	  
	}  
  
  
        var test = new cvs("tabelle");  
	test.row(3).col(4);  

  1. Hi,

    Hallo ist es möglich in Javascript Funktionen zu verschachteln? Ich habe hier unten mal ein Beispiel angehängt wie ich mir das dachte. (Funktioniert natürlich nicht... ;)

    function cvs(id){
                    //Hier passiert ganz viel abgefahrenes zeugs...

      this.row = function(i){	  
      	alert("die ganze tabellen reihe");  
    

    this.col = function(j){
                                   alert("und jetzt nur ein Element");
                            }

      }  
    

    }

    var test = new cvs("tabelle");
    test.row(3).col(4);

      
    Das kann nicht funktioneren, weil row gar keinen Rückgabewert hat, "auf" dem dann die Methode col aufgerufen werden könnte.  
      
    Lege beides als Methoden von cvs an - und lasse die Funktionen jeweils das Objekt zurückgeben, \*dann\* kannst du die Methoden auf diese Weise "hintereinandergehängt" aufrufen.  
    Das nennt sich Method Chaining.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Das kann nicht funktioneren, weil row gar keinen Rückgabewert hat, "auf" dem dann die Methode col aufgerufen werden könnte.

      Lege beides als Methoden von cvs an - und lasse die Funktionen jeweils das Objekt zurückgeben, *dann* kannst du die Methoden auf diese Weise "hintereinandergehängt" aufrufen.
      Das nennt sich Method Chaining.

      MfG ChrisB

      Das bringt mich ja schonmal ein ganzes stück weiter :) Warscheinlich stehe ich gerade einfach nur auf dem schlauch auber wie kann ich denn jetzt Werte übergeben, wenn ich this returen?

      Bsp:

        
      	function cvs(id){	  
      			  
      			this.row = function(i){  
      				alert(i);   // Funktioniert  
      				return this;	  
      			}  
      			  
      			this.col = function(j){  
      				alert(i+j); // Funktioniert (natürlich) nicht...  
      				return this;  
      			}  
      			  
      		}  
      	  
      	var test = new cvs("tabelle");  
      	test.row(5).col(6);  
      
      

      Desweiteren kann ich nun ja auch direkt test.col(6); aufrufen, was ja nicht klappen würde wenn das obere Beispiel funktionieren würde...

      1. function cvs(id){
        var i = 0;
                     var j = 0;
        this.row = function(i){
                                     this.i = i;
        alert(this.i);   // Funktioniert
        return this;
        }

          	this.col = function(j){  
        

        this.j = j;
        alert(this.i+this.j); // Funktioniert (jetzt) nicht...
        return this;
        }

          }  
        

        var test = new cvs("tabelle");
        test.row(5).col(6);

          
        Hab da das Zitat ein wenig geändert!!  
        Chaining eignet sich nur bei "void" Methoden also ohne eigentlichen Rückgabe wert oder wenn du ein Objekt zurück gibst, dann sparst du dir jeweils 1 Zeile und ruft die Methode direkt auf.  
          
        Gruß  
        T-Rex -> T-Rex -> T-Rex