Grüssi,
Ich würde gerne Objekthierarchien definieren; aber was beispielsweise mit VB ein Kinderspiel ist, will mir mit JavaScript nicht so recht gelingen. Das Problem sehe ich in den Arrays.
Beispiel:
function Book(Titel, Autor) {
this.Titel = Titel;
this.Autor = Autor;
this.Kapitel = new Array();
}
function Chapter(Ueberschrift) {
this.Ueberschrift = Ueberschrift;
}
var Buch = new Array();
Buch[12] = new Book("SELFHTML", "Stefan Münz");
Buch[12].Kapitel[2] = new Chapter();
Buch[12].Kapitel[2].Ueberschrift = "HTML";
Buch[12].Kapitel[5] = new Chapter();
Buch[12].Kapitel[5].Ueberschrift = "JavaScript";
Dieser Code funktioniert zwar; bei einer umfangreicheren Objekthierarchie finde ich die ewige Instanzierung (z.B. = new Chapter()) doch lästig.
äähhm, meintest du vielleicht so etwas in diese Richtung:
// Konstruktor für das Buch
function Book(Titel, Autor) {
this.Titel = Titel;
this.Autor = Autor;
this.Kapitel = new Array();
}
// "Pseudo-Konstruktor" für die Kapitel
function addChapter(Index, Ueberschrift) {
this.Kapitel[Index] = Ueberschrift;
}
// Und auch ne Methode zum ausgeben:
function getChapter (Index) {
return this.Kapitel[Index];
}
// Die Funktion, zu einer Instanzmethode machen
Book.prototype.addChapter = addChapter;
Book.prototype.getChapter = getChapter;
// Aufruf:
b = new Book("SELFHTML","Stefan Münz");
b.addChapter(1,"Editorial");
b.addChapter(2,"Einführung");
// Test:
alert(b.getChapter(1));
alert(b.getChapter(2));
Es wär zwar schöner ein Array von Chapter-Objekten im Book-Konstruktor anzulegen, es fällt mir aber auf die schnelle nicht wirklich was dazu ein ;-)
hth,
regenfeld