Tag Stefan.
danke für die Mühe, Du hast es auch gut erklärt. Leider ist das nicht mein Problem. Ich brauche tatsächlich nur eine ELTERN - Instanz für alle Kind Objekte.
Dann verstehe ich dein Problem nicht.
Ja. Wenn du es so schreibst, wird das Objekt ELTERN nur einmal vererbt, nämlich auf das Objekt KIND. Damit steht es mit seinen Eigenschaften für alle KIND-Objekte genau einmal zur Verfügung. Änderst du eine vom Objekt ELTERN geerbte Eigenschaft, führt das zu dem von dir beschriebenen Ergebnis.
Stimmt nicht.
Stimmt doch :)
Projiziere meine Aussage auf das Array-Objekt, denn dieses ist - wie du schon vermutest - der Knackpunkt. Ich habe mir das Ganze nochmal angesehen und bin zu folgender Lösung gekommen:
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;
// hier ist der Knackpunkt: erst hier wird Objekte zum Array
Kind1.Objekte = new Array("Ball","Rassel");
Kind1.Alter = 5;
Kind2.Objekte = new Array("Nuckel","Kreisel");
Kind2.Alter = 10;
alert("Kind1: "+Kind1.Objekte[0]+", "+Kind1.Objekte[1]+", "+Kind1.Alter+"\nKind2: "+Kind2.Objekte[0]+", "+Kind2.Objekte[1]+", "+Kind2.Alter);
Es bringt auch nichts, die Array-Definition in der ELTERN-Funktion unterzubringen. Das Problem ist genau das, was ich vermutet hatte, du erzeugst ein Array ELTERN.Objekte, auf das sämtliche KIND-Objekte Zugriff haben. Du willst aber vermutlich, dass jedes KIND ein eigenes Array ELTERN.Objekte bekommt.
[dsf 3.6]
Siechfred
»Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«