dedlfix: Javascript Reference Types Beispiel und Frage

Beitrag lesen

problematische Seite

Tach!

warum behält elementNum den ursprünglichen Wert?

elementNum wird einmalig im Konstuktor zugewiesen. Der Wert ist ein primitiver Typ, mit der Länge des Arrays zum damaligen Zeitpunkt belegt.

Wenn du die aktuelle länge haben möchtest, musst du this.arrAllDatasets.length befragen und nicht eine Kopie eines ehemaligen Wertes. Eine get-Property kann den Wert liefern, oder eine Methode.

Hintergrund der Frage ist, dass ich das Array nur einmal an den Constructor übergeben möchte und dann das Array einmal mit allen ursprünglichen Daten speichern möchte und einmal mit geänderten Daten. Wenn z.B. eine Methode aufgerufen wird, um Daten in das Array hinzuzufügen oder zu entfernen.

Dazu musst du eine Kopie des Arrays erzeugen. Eine einfache Zuweisung gibt nur die Referenz weiter. Beide Eigenschaften zeigen damit auf dasselbe Array. Eine einfache Kopie kann mit .slice() (ohne Parameter) angelegt werden. Damit wird das Array kopiert. Da du Strings als Inhalte hast, werden diese kopiert. Bei Objekten würden nur die Referenzen kopiert werden.

dedlfix.