was ist der unterschied?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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!

    Comment


    • #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

      Comment


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

        Comment


        • #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

          Comment

          Working...
          X