Axel Richter: objecte mehrfach erstellen

Beitrag lesen

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