DaBear: Referenzen und Objekte bei Javascript

Beitrag lesen

function A(a)
{
   var a = a;
   //...
}

function B(a)
{
   var a = a;

this.tuwas = tuwas()
   {
      a = new A();
      //a ausgeben
   }
}

function C(meinarray)
{
   var meinA = new A(meinarray);

this.tuwas2 = tuwas2()
   {
      var meinB = new B(meinA);
      meinB.tuwas();
      //Ausgabe von meinA
   }
}


> >   
> > Im Beispiel ist ungefähr das Kommandomuster umgesetzt.  
> > Zunächst wird ein Objekt von C erschaffen und kriegt ein Array übergeben....  
>   
> Nein! Zunächst passiert erstmal gar nichts. Solange C nicht auzfgerufen wird, wird weder von C etwas erschaffen noch wird etwas übergeben.  
> Oder hast du mit deiner Aussage gemeint, daß ein Objekt C erschaffen wird?  
>   
> Also mal angenommen, C wird aufgerufen und dabei auch wirklich ein Array an C übergeben:  
> > Zunächst wird ein Objekt von C erschaffen und kriegt ein Array übergeben, worauf C ein neues A kreiert.  
> Nein.  
> Es wird eine lokale Variable meinA erzeugt.  
> Diese ist nur in C erreichbar.  
> Es wird kein neues A kreiert sondern eine Instanz des bestehenden A erzeugt.  
> In der lokalen Variable meinA wird eine Referenz auf die erzeugte Instanz von A gespeichert.  
>   
> > Dann wird von C die funktion tuwas2() aufgerufen.  
> Nein, wird Sie nicht.  
> Aber mal angenommen, Sie würde aufgerufen werden:  
>   
> > Hier wird ein neues B erschaffen und das B kriegt das bereits bekannte A übergeben (als Referenz oder?).  
> Es wird eine Instanz von B erzeugt und eine Referenz auf die Instanz in der lokalen Variable meinB gespeichert.  
> Der Instanz von B wird eine Referenz auf die zuvor erzeugte Instanz von A übergeben.  
>   
> > Nun wird vom B die Methode tuwas() aufgerufen, die das A quasi löscht bzw. halt ein neues A ohne Array erzeugt.  
>   
> Beim Erzeugen der Instanz von B wurde in der lokalen Variable a eine Referenz auf meinA gespeichert (nicht schön, daß da alles a heißt).  
> Beim Aufruf von tuwas wird eine neue Instanz von A erzeugt und eine Referenz auf diese neue Instanz von A in a gespeichert.  
>   
> Die zuerst (in C) erzeugte Instanz von A bleibt unverändert bestehen. Eine Referenz auf diese Instanz ist noch in meinA gespeichert (innerhalb von C).  
  
Okay soweit so gut.  
C (bzw die Instanz von C) hat ja nun eine Referenz auf die in C erzeugte Instanz von A. Wenn ich nun möchte, dass nach tuwas() diese Referenz von C auf ein neue von der Instanz von B erschaffene Instanz von A zeigt, was muss ich dann tun?  
B müsste ja dann keine \_Referenz\_ auf die Referenz von C (also hier meinA) speichern, sondern B müsste direkt die Referenz von C selbst speichern und diese dann Überschreiben. D.h. man würde jetzt eigentlich die Referenz auf die Referenz dereferenzieren. Aber das geht in Javascript nicht.  
  
Was bleiben mir für Möglichkeiten?