Know-how für Kreative

Inhaltsverzeichnis
1 Erste Schritte
2 Versionen
3 Einführung in die Programmierung
4 Die Entwicklungsumgebung
5 Regeln
6 Anweisungen und Aktionen
7 Werte und Datentypen
8 Ausdrücke und Operatoren
9 Funktionen
10 Kontrollstrukturen
11 Dokumenten-Objektmodell und Gültigkeitsbereich (Scope)
12 Ereignisse
13 Objekterstellung
14 Vererbung
15 Movieclips
16 ActionScript 2.0
17 Komponenten
18 Codedesign und Konzeption
19 Flashdetection
20 Aussergewoehnliche Benutzerfuehrung
21 D mit Flash
22 Macromedia Central
23 HTML
24 JavaScript, ActiveX und Java
25 Flash undokumentiert
26 Vergangenheit, Gegenwart und Zukunft
27 Kurzreferenz
28 Buchtipps
29 Links
30 Die CD-ROM zum Buch
Index
Download: - ZIP, ca. 9,8 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Design / <openbook> / ActionScript | vor >>
ActionScript 1 und 2 von Sascha Wolter (http://www.saschawolter.de/) Objektorientierung und Codedesign mit Flash MX 2004
ActionScript 1 und 2 672 S., mit CD, Referenzkarte, 44,90 Euro Galileo Design ISBN 3-89842-221-6 |
| Kapitel 14 Vererbung
|  | 14.1 Klassen
|  |  | 14.1.1 Von Klassen und Prototypen
|  | 14.2 Evolution und Spezialisierung
|  | 14.3 Erben von Fähigkeiten
|  | 14.4 Erben von Eigenschaften
|  | 14.5 prototype, __proto__ und super
|  | 14.6 Alternative
## 14.5 prototype, __proto__ und super 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. 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. Hier klicken, um das Bild zu Vergrößern Abbildung 14.5 Die Verwendung von dem super-Operator
<< zurück | <top> | vor >>
Zum Katalog
ActionScript 1 und 2 bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung
Buchtipps
| Einstieg in ActionScript
| Einstieg in Flash 8
| Flash 8 und PHP
| Flash 8-Tutorials
| Dreamweaver 8
| Webseiten programmieren und gestalten
Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

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