Hallo allerseits,
ich möchte eine Objekt-Eigenschaft in Form eines Arrays benutzen. Das funktioniert aber nur, wenn diese Eigenschaft in der Objekt-Definition festgelegt wurde, nicht aber, wenn sie von einem übergeordneten Objekt vererbt wurde. Der folgende Code gibt für die Eigenschaft "Objekte" der Instanzen "Kind1" und "Kind2" beidesmal den String "Rassel" aus, es scheint also, als würden alle Instanzen auf denselben Wert gesetzt. Das ist aber nicht der Fall, wenn die Eigenschaft keine Arrayform hat, oder keine Vererbung vorliegt, wie beim "WAISE"-Objekt.
function ELTERN (Objekte, Alter){
this.Objekte = Objekte || ["leer"];
this.Alter = Alter || 30;
}
function KIND (irgendwas){
this.irgendwas = irgendwas;
}
KIND.prototype = new ELTERN;
Kind1 = new KIND;
Kind2 = new KIND;
Kind1.Objekte[0] = "Ball";
Kind1.Alter = 5;
Kind2.Objekte[0] = "Rassel";
Kind2.Alter = 10;
function WAISE (Objekte, Alter){
this.Objekte = Objekte || ["leer"];
this.Alter = Alter || 7;
}
Waise1 = new WAISE;
Waise1.Alter = 5;
Waise2 = new WAISE;
Waise2.Alter = 10;
Waise1.Objekte[0] = "Ball";
Waise2.Objekte[0] = "Rassel";
str1 = "Kind1: "+Kind1.Objekte[0]+", "+Kind1.Alter+"\nKind2: "+Kind2.Objekte[0]+", "+Kind2.Alter;
str2 = "Waise1: "+Waise1.Objekte[0]+", "+Waise1.Alter+"\nWaise2: "+Waise2.Objekte[0]+", "+Waise2.Alter;
alert(str1+"\n"+str2);
Kann mir jemand, der mehr Ahnung von OOP und JS hat als ich, sagen, woran das liegt? Bitte fragt auch nicht, wozu das gut sein soll, das Problem stellt sich mir nämlich nicht im Zusammenhang mit einem Webbrowser. Ich arbeite in der Audio-Entwicklungsumgebung MAX/MSP, die seit Kurzem eine Schnittstelle zu JS hat. Ich habe es nur auf eine in einem Webbrowser darstellbare Art reduziert.
Vielen Dank für jede Hilfe. Mit freundlichen Grüßen
Stefan