00willson: Arrays und .push()

Beitrag lesen

Hi Chris,

besten Dank. Ich verstehe. Schade, jedes mal eine neue Instanz des Objektes anzulegen, macht es nicht gerade einfacher. Zumal alles generisch passieren soll. Naja, vielleicht fällt mir ja nochwas ein.

Besten Dank jedenfalls!

Hi,

Ich definiere einen eigenen Datentypen, den ich später mit Formulardaten füttere:
function currentReservation() {

Du hast also ein (Funktions-)Objekt definiert,

var temp_reservationObj = new currentReservation();

Und legst von diesem eine neue Instanz an.
temp_reservationObj referenziert jetzt also auf dein neues Objekt vom Typ currentReservation.

Schließlich möchte ich diesen Datentyp einem Array hinzufügen:

var reservationObj = new Array();
reservationObj.push(temp_reservationObj);


> >   
> > Der eigene Datentyp wird mehrmals mit neuen Daten befüllt (ohne Seitenreload), die als immer neues Element dem Array hinzugefügt werden sollten. Und "sollte" ist auch das Problem: füge ich ein jeweils neues Element dem Array hinzu (.push(), siehe oben), funktioniert dies auch grundsätzlich, nur werden die Werte aller bereits vorhandenen Elemente des Array mit den Werten des neu hinzugefügten Elements überschrieben.  
>   
> Natuerlich, weil du immer noch mit der selben Instanz von currentReservation arbeitest.  
>   
> JavaScript uebergibt Objekte \*immer\* per reference.  
> Du hast also gar nicht mehrere Objektinstanzen in deinem Array, sondern lediglich die Referenz auf die eine vorhandene mehrfach eingefuegt.  
> Also aendern sich auch bei "allen" die Daten, wenn du sie bei dem "einen" aenderst.  
>   
> Wenn du mehrere Instanzen deines Objektes currentReservation nutzen willst - dann lege auch mehrere Instanzen an.  
>   
> MfG ChrisB  
>   
>