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?