Gerd Liebe: "Sprachfehler" bei Arrays?

Hallo Leute!
Ich habe beim Arbeiten mit Arrays mit Merkwürdigkeiten zu kämpfen. Nachfolgend das Problem:

HTML-Teil (in einer Datei_0.htm):
  <script....src=Datei_1.js> //in dieser Datei ist eine Matrix aus String-Vektoren
  <script....src=Datei_2.js> //in dieser Datei sind die diversen Funktionen

JavaScript-Teil (Datei_1): //dieser Dateiinhalt wird dynamisch generiert, daher 2 js-Dateien
var vec0=new Array("Titel_A","Titel_B");
var vec1=new Array("Wert_A","Wert_B");
var U=new Array(vec0,vec1);

JavaScript-Teil (Datei_2):
  var X=U; //Erzeugen einer globalen Variable X und Zuweisung der Matrix (U) aus Datei_1
Bemerkung: Datei_2 existiert mehrfach - so brauche ich die Zuweisung nur einmal im
  Kopf der jeweiligen Kopie von Datei_2 machen.

function MachMist()
{
  var TMPCopy=X;       //Erzeugen einer lokalen Kopie der globalen Variable X
  alert(X);                    //Die gesamte Matrix wird angezeigt
  TMPCopy.shift();       //Löschen des ersten Vektors (=vec0) aus der lokalen Kopie (!)
  alert(X);                    // Jetzt enthält auch die globale Variable nur noch 1 Zeile (vec1) !!!
}

Frage:
  Kann es sein, daß ich anstelle einer echten Kopie mit einer solchen Zuweisung nur
  einen Pointer auf "X" erzeuge bzw. nur die Adresse von "X" in "TMPCopy" ablege???

PS: Ich benutze Netscape 4.05 Prof.(en) auf NT40 mit IIS3.0 auf der gleichen Maschine

  1. Naja, was heisst Sprachfehler. Eigentlich nicht, wenn man weiss, womit man arbeitet.

    Wenn Du eine Matrix definierst, indem du einen Array mit zwei Arrays als Inhalt definierst, dann musst Du Dir klar darueber sein, dass deine Matrix in Wirklichkeit nur zwei Pointer auf die andern Arrays enthaelt. Wenn Du also einer neuen Matrix diese zuweist, enthaelt diese genau die gleichen Pointer.
    Wenn Du also z.B. einer der Arrays jetzt aenderst, aenderst du damit auch beide Martizen. In deinem Fall wirst du bemerken, dass es deinen ersten Array veraendert hat, nicht deine Matrizen selbst.

    Die Loesung des Problems koennte sein, nur Variablen zu uebergeben, nicht ganz Objekte. Ich hab es nicth ausprobiert, aber es ist die einzige Loesung, die ich mir vorstellen kann.