was ist der unterschied?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • was ist der unterschied?

    kann mir mal bitte einer den unterschied erklären? das hier funktioniert:
    PHP-Code:
    function obj ()
    {
        
    this.a;
        
    this.bla = function ()
        {
            
    this.blubb();
        }
                
        
    this.blubb = function ()
        {
            
    this.'blubb' "\n";
        }
    }
            
    window.onload = function ()
    {
        
    laber = new obj();
        
    laber.bla();
        
    alert (laber.a);

    und das hier nicht, da bekomme ich ein undefined:
    PHP-Code:
    function obj ()
    {
        
    this.bla = function ()
        {
            
    blubb();
        }
                
        function 
    blubb ()
        {
            
    this.'blubb' "\n";
        }
    }
            
    window.onload = function ()
    {
        
    laber = new obj();
        
    laber.bla();
        
    alert (laber.a);

    wenn ich alles richtig verstanden habe, so ist this.bla eine art öffentlicher methode und function blubb eine art private methode innerhalb eines objektes. aber warum kann mit einer privaten methode nicht auf eine öffentliche eigenschaft (this.a) zugreifen?

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    so wie ich das sehe ist beim zweiten this.a keine öffentliche eigenschaft, da in der privaten funktion definiert
    Die Milch bleibt ranzig!

    Kommentar


    • #3
      upsi, habe was vergessen, natürlich wird die variable vorher initialisiert:
      PHP-Code:
      function obj ()
      {
          
      this.'';
          
      this.bla = function ()
          {
              
      blubb();
          }
                  
          function 
      blubb ()
          {
              
      this.+= 'blubb' "\n";
          }
      }
              
      window.onload = function ()
      {
          
      laber = new obj();
          
      laber.bla();
          
      alert (laber.a);

      bewirkt das gleiche. ein alert in function.blubb ergibt zwar das korrekte ergebnis, steht dann aber nur lokal zur verfügung. naja, javascript halt.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        PHP-Code:
            this.bla = function ()
            {
                
        this.blubb();
            } 
        Und wenn du den Aufruf der Funktion auch mit this qualifizierst?

        Kommentar


        • #5
          das funktioniert, ich weiss. ist aber nicht das, was ich wollte:
          PHP-Code:
          this.bla = function ()
          {
              
          this.blubb();
          }
                      
          this.blubb = function ()
          {
              
          this.'blubb' "\n";

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar

          Lädt...
          X