Liebe(r) MB,
ich glaube, Du hast mich falsch verstanden...
wenn ich ihn fertig habe da lass ich dich teilhaben ;-) und schicke dir ne PN.
Darum ging es mir nicht. Dein Projekt selbst ist für mich nicht von Interesse. Nur die gestellte Aufgabe und wie man sie technisch lösen kann, ist für mich von Interesse.
is nur ne einleitung. sry wenns net klar geworden ist.
Wenn etwas nicht klar beschrieben ist, dann ist sowohl das Verfassen des Postings für den Verfasser, als auch das Lesen des Postings für alle Leser eine Zeitverschwendung. Das kannst Du vermeiden.
jo ok. Strings sind doch ne art Array mit chars also Objekt und kein primitiv oder?
Nicht in JavaScript:
var a = "Hallo Welt!";
var b = a;
a = "nix los hier...";
alert(b);
Obiger Code demonstriert, dass Strings intern als primitive Werte gehandelt werden. In der Variable wird eine Kopie des Wertes aus a abgelegt. Deshalb ändert sich der Wert in b nicht, wenn a einen anderen Wert erhält.
Natürlich sind a und b jeweils ein Objekt vom Typ String, aber wie man am Ende sehen kann, ändert sich der Wert in b nicht, da a und b auf verschiedene Objekte zeigen. Bei primitiven Objekten (ja, in JavaScript ist alles ein Objekt) kann man dieses Verhalten beobachten, nicht jedoch bei non-primitives:
var a = { key: "value" };
var b = a;
a.key = "empty!";
alert(b.key);
var c = [42];
var d = c;
c.push("Hallo Welt!");
alert(d);
Obiger Code zeigt, dass das "Umkopieren" in eine andere Variable keine Kopie erzeugt, denn wenn man den Inhalt der ursprünglichen Variable (hier a und c) verändert, verändert sich der Inhalt der Kopie-Variablen (hier b und d) mit. Beim "Umkopieren" werden hier keine Kopien der Objekte selbst erzeugt, sondern nur eine Referenz auf das selbe Objekt in die Kopie-Variable abgelegt. Das erklärt, warum sich Änderungen am Original auch in der (vermeintlichen) Kopie niederschlagen.
Und Klonen ist mir neu oder meinst du new. konstruktoren sind ja auch objekte die erzeugt werden müssen.
Nein. Wieder ein Beispiel:
var a = { key: "value" };
var b = {};
for (var k in a) {
b[k] = a[k];
}
a.key = "empty!";
alert(b.key);
var c = [42];
var d = [];
for (var i = 0; i < c.length; i++) {
d[i] = c[i];
}
c.push("Hallo Welt!");
alert(d);
Hier kann man sehen, welche Mühen aufgewandt werden müssen, damit echte neue Objekte in den Kopie-Variablen stehen. Das ist mit "Klonen" gemeint. Mittels einer for-in-Schleife kann man "öffentliche" Eigenschaften und Methoden umkopieren (Vorsicht, wenn diese keine Primitiven sind, dann muss man diese auch wieder erst klonen!), die nicht als interne Eigenschaft oder Methode angelegt sind. Würde ich die for-in-Schleife auf das Array in Variable c anwenden, bekäme ich "length" als Eigenschaft nicht umkopiert! Die "key"-Eigenschaft in dem Objekt der Variable a dagegen wird umkopiert. Wenn Du hier Probleme bekommst, dann willst Du nach "hasOwnProperty" suchen und Dich weiterbilden.
sorry 300 zeilen lang und es werden mehr und muss auch implementiert werden.
Wo ist das Problem so etwas zu hosten? Du kennst wohl Tools wie jsFiddle nicht? Dort könnte man Deinen Code testen und Dir zeigen, was eventuell problematisch ist.
Ok, verständlich. Herzlichen Danke und ich melde mich bei dir. frühstens in der Woche.
Bitte melde Dich hier im Forum. Ich bin nicht Dein persönlicher Betreuer geworden, nur weil ich hier eine Antwort gepostet habe. Auch andere können Dir hier weiterhelfen.
Liebe Grüße,
Felix Riesterer.