Hallo,
mein problem ist das ich das object "unit" nicht nicht mehrmals erstellen kann.
bei "base_object2" von dem "unit" erbt geht das noch.
ich vermute den fehler im constructor von "unit" komm aber nicht drauf...
[code lang=javascript]
function base_object2()
{
this.div = document.createElement("div");
...
this.init_div=init_div;
}
function init_div()
{
document.getElementById(mapbox).appendChild(this.div);
}
function unit(id,x,y,html,update,status,action)
{
this.div.id = id;
...
}
unit.prototype = new base_object2;
Der Prototyp von unit ist _ein_ neues base_object2. Es wird also mit new unit(...) jeweils auf das selbe DIV zugegriffen, nämlich auf das, was bei der Bereitstellung des Prototyps von unit mit new base_object2 erzeugt wurde. Selbst das appendChild in init_div ändert nichts daran, weil lt. Definition bei existierenden Nodes eben nicht angehängt, sondern verschoben wird. Siehe https://developer.mozilla.org/en/appendchild.
Du müsstest also im Konstruktor von unit den Konstruktor von base_object2 einbinden. Siehe https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Function/call#Using_call_to_chain_constructors_for_an_object.
Allerdings würde ich JavaScript nicht zu dieser Art der OOP vergewaltigen. Du versuchst hier mit Macht Klassen und Klassenvererbung nachzubauen. Nutze lieber konsequent das prototyping, indem Du Dein base_object bei Bedarf per base_object.prototype mit neuen Eigenschaften oder Methoden erweiterst, statt per neuer function eine neue "Klasse" erzeugen zu wollen.
viele Grüße
Axel