1 Erkenntnisse aus sj/sj1, die in sj2 beachtet werden müssen
5 "javascript: ..." nicht wie event behandeln, insbesondere werden
6 this und document nicht implizit als Search-Objekte gesetzt.
9 - prototype Eigenschaft von Objekten:
10 Manipuliert Klassen-Informationen, falls an einem beliebigen Objekt
11 eine Property mit gleichem Namen angelegt wird, so gilt dieses
12 Ueberschreiben jedoch nur fuer dieses eine Objekt !!!
13 Im Sj/Sj1 Projekt ist dies jedoch nicht erfuellt !
16 function Ctor() { ... }
18 obj1 = new Ctor(); // obj1 obj2
19 obj2 = new Ctor(); //-------------------------
20 Ctor.prototype.toString = myToString; // myToString myToString
21 obj1.toString = myToString2; // myToString2 myToString
22 Ctor.prototype.toString = myToString3; // myToString2 myToString3
25 - toString() und valueOf() Behandlung des BaseObj bei Type-Konversion
27 ========================================================================
29 Bemerkungen zur Suchreihenfolge und zum Ueberladen von Funktionen:
31 * fuer jede 'Klasse' (z.B. Math, Date, String) gibt es ein Konstruktor-
32 Objekt in der JavaScript-Umgebung.
33 In dem Konstruktor-Objekt werden die Properties der Klasse angelegt,
35 Der Konstruktor setzt seine Properties an jedem neu erzeugten
36 Objekt. Daher hat z.B. jedes Date-Objekt eine (default-behandelte)
38 Zum Setzten der Properties des Konstruktor an das neu erzeugte
39 Objekt sollte die initProp()-Methode noch einen Bereich der zu
40 kopierenden Properties bekommen, damit nicht alle nachtraeglich
41 am Konstruktor-Objekt angelegten Properties auch am Objekt gesetzt
44 * jedes Objekt haelt eine Referenz auf seinen Konstruktor (entweder die
45 vordefinierten Klassen wie Math, Date oder die Funktion mit der das
46 Objekt erzeugt wurde).
48 * fuer die Suchreihenfolge gibt es folgende drei Moeglichkeiten:
50 - Default-behandelte Property:
51 aStrg = new String( "gulp" );
52 aStrg.toString() // --> verwendet toString-Property am
53 // String-Konstruktor (default-Behandlung)
55 - Default-Behandlung ueberladen am Konstruktor:
56 aStrg = new String( "gulp" );
57 String.prototype.toString = myToString; // UEBERLADEN !
58 aStrg.toString() // --> verwendet myToString-Funktion.
59 // Das prototype-Objekt wird am String-Ctor.
60 // angelegt und ueberschreibt daher die
61 // default-behandelte Property am Objekt !!!
62 // Der Interpreter muss dann noch an einem
63 // ggf. vorhandenen prototype-Objekt am
64 // Konstruktor nach der Property suchen.
66 - ueberladen am Objekt:
67 aStrg = new String( "gulp" );
68 String.prototype.toString = myToString; // am Ctor. ueberladen
69 aStrg.toString = myToString2;
70 aStrg.toString() // --> verwendet myToString2-Funktion.
71 // Die Property toString wird am Objekt
72 // ueberschrieben und somit das Flag, dass
73 // die default-Behandlung anzeigt, zurueck
74 // gesetzt. D.h. der Interpreter muss das
75 // prototype-Objekt des Konstruktors NICHT
79 ========================================================================
83 Die Properties der Standard-Objekte (z.B. setSeconds() am Date)
84 werden am prototype-Objekt des Konstruktors (z.B. DateCtor) angelegt.
85 Bei der Suche nach Properties an einem beliebigen Objekt wird erst
86 das Objekt durchsucht und anschliessend das prototype-Objekt des
87 Konstruktors fuer das Objekt durchsucht. Dieses Verhalten gleicht
88 dem Netscape-Verhalten (Stand 2.7.1997).
91 Das ist so nicht korrekt, da die entsprechenden Properties direkt
92 am prototype-Objekt nicht bekannt sind. Die an den Objekten als
93 Default geflagten Properties bilden daher das Netscape-Verhalten
97 ========================================================================
99 WEITERE OFFENE PROBLEME:
100 ------------------------
102 * this auf der Wiese funktioniert noch nicht korrekt
104 * Konversion von Typen ?