Timo Hölzer wrote:
ja dashört sich schlüssig an.
Ich erkläre mir das so:
"new" liefert die Instanz einer Klasse(Objekt).
Dabei passiert nichts anderes, als daß eine leerer Instanz eines Kontainers(Object) mit Methoden und Eigenschaften gefüllt wird. Genauer gesagt wird ja das prototype Object des mit diesen Methoden versehen, auf welche die Klasse später zugreift.
o = GameSound.prototype = new Sound();
würde folglich bedeuten, daß das prototype Object der Klasse GameSound die "Rückgabe" der Konstruktor Funktion erhällt, nicht jedoch die Instanz der Klasse
Da das prototype Object von GameSound nun aber über alle Methoden der Klasse Sound verfügt, hat die Vererbung stattgefunden, die Initialisierung jedoch nicht.
Was hällst du von dieser Erklärung???
Stufe #0: Variable _level0.$version = "WIN 6,0,65,0" Variable _level0.GameSound = [Funktion] { prototype:[Objekt #2, Klasse 'Sound'] { playSound:[Funktion 'playSound'] } } Variable _level0.o = [Objekt #2, Klasse 'Sound'] Variable _level0.a = [Objekt #4, Klasse 'Sound'] {}
Stufe #0: Variable _level0.$version = "WIN 6,0,65,0" Variable _level0.GameSound = [Funktion] { prototype:[Objekt #2, Klasse 'Sound'] { playSound:[Funktion 'playSound'], id3:[Get/Set] undefined, duration:[Get/Set] undefined, position:[Get/Set] undefined } } Variable _level0.o = [Objekt #2, Klasse 'Sound'] Variable _level0.a = [Objekt #4, Klasse 'Sound'] { id3:[Get/Set] undefined, duration:[Get/Set] 2061, position:[Get/Set] 2061 }
ich erstelle meistens nur unterklassen von Movieclip, wo ich noch nie super() benutzt habe, aber da übernimmt dann wohl Object.registerclass den konstruktoraufruf. oooder? :o)
gruß michael
------------------------------------------------------ Archiv : //www.freelists.org/archives/ascoders/ Optionen : //www.freelists.org/list/ascoders ------------------------------------------------------