update dev300-m58
[ooovba.git] / sj2 / doc / Todo.txt
blob6520abaa10a8a3397f46507312066c04a20ffff0
1 Erkenntnisse aus sj/sj1, die in sj2 beachtet werden müssen
4 - Call von C++
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 !
15 Beispiel:
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,
34   z.B. sin, cos.
35   Der Konstruktor setzt seine Properties an jedem neu erzeugten
36   Objekt. Daher hat z.B. jedes Date-Objekt eine (default-behandelte)
37   Property setMonth.
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
42   werden.
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
76                                                   // durchsuchen.
79 ========================================================================
81 DEMNAECHST:
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).
90 ACHTUNG, AB 11.8:
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
94 besser ab.
97 ========================================================================
99 WEITERE OFFENE PROBLEME:
100 ------------------------
102   * this auf der Wiese funktioniert noch nicht korrekt
104   * Konversion von Typen ?