Galileo Design < openbook > Galileo Design - Know-how für Kreative.
Know-how für Kreative

 << zurück
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/)
Objektorientierung und Codedesign mit Flash MX 2004
Buch: ActionScript 1 und 2

ActionScript 1 und 2
672 S., mit CD, Referenzkarte, 44,90 Euro
Galileo Design
ISBN 3-89842-221-6
gp Kapitel 14 Vererbung
  gp 14.1 Klassen
    gp 14.1.1 Von Klassen und Prototypen
  gp 14.2 Evolution und Spezialisierung
  gp 14.3 Erben von Fähigkeiten
  gp 14.4 Erben von Eigenschaften
  gp 14.5 prototype, __proto__ und super
  gp 14.6 Alternative


Galileo Design - Zum Seitenanfang

14.5 prototype, __proto__ und super  toptop

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 14.3   Die Eigenschaften proto und prototype bei Klassen und Instanzen

prototype

Die als Vererbung bezeichnete Arbeitsweise von ActionScript bedient sich eines Konzeptes namens Prototypenkette (auch proto-chain genannt). Jedes Funktionsobjekt besitzt als Eigenschaft ein Prototyp-Objekt (prototype). Diesem Prototyp-Objekt weisen Sie die Methoden oder Eigenschaften zu, die für alle Instanzen einer Klasse gelten sollen:

function Klasse() {
}
Klasse.prototype.eigenschaft = "wert";
Klasse.prototype.methode = function() {
};

Bitte beachten Sie, dass die Eigenschaften im Prototyp-Objekt für alle Instanzen einer Klasse den gleichen Wert beinhalten (z.B. für einen Zähler die Anzahl an Instanzen).

proto

Jede Instanz dieser Klasse erhaelt automatisch eine proto -Eigenschaft, die auf den Prototyp der Konstruktorfunktion zeigt (siehe Abbildung). Wenn Sie nun eine Methode oder eine Eigenschaft bezueglich einer Instanz verwenden, sucht Flash zuerst direkt in der Instanz nach dieser. Sollte sich die gesuchte Methode oder Eigenschaft nicht direkt in der Instanz befinden, dann setzt Flash die Suche in dem Prototypen fort, der in proto -Eigenschaft angegeben ist:

function Klasse() {
}
Klasse.prototype.methode = function() {
};
//
instanz = new Klasse();
// Alles dasselbe
instanz.methode();
instanz.__proto__.methode();
Klasse.prototype.methode();

Die Anweisungen in dem vorherigen Skript machen alle dasselbe mit den folgenden Besonderheiten. Die Anweisung instanz.methode(); führt direkt über die Prototypenkette zur Methode, da in der Instanz selber diese Methode ja nicht definiert ist. Die Anweisung instanz.__proto__.methode(); zeigt direkt auf die Methode im Prototypen und führt diese im Kontext der Instanz aus. Dies unterscheidet diese und die letzte Variante. Denn die letzte Anweisung bezieht sich zwar auch auf diese Funktion, ruft sie aber im Kontext des Prototypen-Objektes auf und hat nichts mehr mit der Instanz zu tun.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 14.4   Die Eigenschaften proto und prototype ermöglichen in ActionScript die Vererbung von Fähigkeiten.

Die Vererbung macht sich das Verhalten von Flash bei der Suche nach Eigenschaften und Methoden zunutze und packt einen Zeiger auf den Prototypen der Oberklasse in die __proto__-Eigenschaft der Unterklasse (siehe Abbildung 14.4). So setzt Flash die Suche nach Methoden und Eigenschaften in der Oberklasse fort, wenn es diese Elemente nicht bereits in der Instanz oder der Unterklasse gefunden hat. Auf diese Art und Weise kann die Prototypenkette beliebig verlängert werden:

function Oberklasse() {
}
Oberklasse.prototype.eigenschaft = "Eigenschaft von Oberklasse";
function Unterklasse() {
}
Unterklasse.prototype = new Oberklasse();
instanz = new Unterklasse();
// Alles dasselbe
trace(instanz.eigenschaft); // Sucht in Instanz
trace(instanz.__proto__.eigenschaft); // Sucht in Prototyp der Unterklasse
trace(instanz.__proto__.__proto__.eigenschaft); // Sucht in Prototyp der Oberklasse
Zugriff auf Methoden/Eigenschaften

Sollten Sie also einmal explizit auf eine Methode oder Eigenschaft irgendwo in der Prototypenkette zugreifen müssen, dann gelingt das – die Kenntnis über die genaue Lage in der Prototypenkette vorausgesetzt – durch die direkte Angabe des __proto__-Pfades in der Form:

meineInstanz.__proto__.__proto__.methode();
super-Operator

Eine ähnliche Funktion wie das von Macromedia verpönte __proto__ übernimmt der super-Operator. Dieser stellt den Bezug zum Prototypen einer Oberklasse her. Die Angabe von super(argumente); ruft dabei die Konstruktormethode der Oberklasse auf. super.methode(argumente); bezieht sich auf die Methode einer Oberklasse. Im Gegensatz zu __proto__ ist der Einsatz von super jedoch auf die Methoden und den Konstruktor der Unterklasse beschränkt.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 14.5   Die Verwendung von dem super-Operator

 << zurück
  
  Zum Katalog
Zum Katalog: ActionScript 1 und 2
ActionScript 1 und 2
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Einstieg in ActionScript - Aktuell zu Flash 8






 Einstieg in ActionScript


Zum Katalog: Einstieg in Flash 8






 Einstieg in Flash 8


Zum Katalog: Flash 8 und PHP






 Flash 8 und PHP


Zum Katalog: Flash 8-Tutorials






 Flash 8-Tutorials


Zum Katalog: Dreamweaver 8






 Dreamweaver 8


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten programmieren und gestalten


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Design]

Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de