gruss Christoph,
Als kleine Übung wollte ich nun folgendes machen:
man kann "Menschen erzeugen"(die noch schwarzen
Kästen) und in alle Himmelsrichtungen verschieben.
So weit so gut. Das funktioniert ... nur teilweise:Der erste Mensch ist standartmäßig vorhanden(Mensch Nummer 0).
Das Programm erhöht eine Index - ...
...
... die dafür zuständige Variable nennt sich mensch_anzahl
und wird am ende so behandelt:mensch_anzahl++;
dies geschieht bei Dir nur in der methode [createMensch] die dem
objekt [tv] gehoert und eben genau einmal auf [window.onload]
aufgerufen wird.
Und jetzt die Frage: Warum kann diese Variable maximal den Wert 1 bekommen?
das ist auch schon die halbe antwort auf obige frage.
alle anderen [[Mensch]]-instanzen ezeugst Du ueber den direkten
aufruf des [[Mensch]]-konstruktors aus der globalen funktion
[FuegeNeuenMenschenHinzu] heraus. dort wird aber der genau einmal
in [tv.createMensch ] um 1 erhoehte index [tv.mensch_anzahl] immer
wieder nur mit diesem wert 1 ueberschrieben und eben nicht erhoeht.
denn die zuweisung:
var anzahl = tv.mensch_anzahl;
initialisiert das lokale [anzahl] mir der aktuellen 1.
die zuweisung:
tv.mensch_anzahl = anzahl++;
erhoeht jetzt aber keineswegs [tv.mensch_anzahl] um 1, sondern
setzt [tv.mensch_anzahl] zuerst auf den aktuellen wert des lokalen
[anzahl], der immer noch 1 ist, und erhoeht erst nach dieser
zuweisung [anzahl] auf 2.
und genau das passiert in Deinem code bei jedem aufruf von
[FuegeNeuenMenschenHinzu].
so long - peterS. - pseliger@gmx.net
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]