Moin moin!
->>> liefert mir den kompletten Quelltext der ArrayNachString function zurück... WARUM??? weil es eine Methode und keine Eigenschaft ist?
Das ist ganz normal so, auch fuer normale Funktionen, die keine Methoden eines Objektes sind. Bei jeder Variable/Eigenschaft, die kein primitiver Datentyp, sondern ein Objekt ist, und die in einem String-Kontext aufgerufen wird (wie in dem alert()), wird automatisch die toString()-Methode aufgerufen und deren Rueckgabewert verwendet. Diese Methode gibt es immer, da alle Objekte vom Objekt Object abstammen und toString bereits dort vorhanden ist.
Objekte des Typs Function (alle Funktionen/Methoden sind Objekte dieses Typs) ueberschreiben diese Methode aber, naemlich so, dass der Quelltext der Funktion zurueckgeliefert wird. Dies stimmt sogar fuer eingebaute Funktionen, allerdings kommt dort nur die Ausgabe "[native code]", da es ja keinen JavaScript-Sourcecode dafuer gibt.
Literatur:
Object.toString: http://docserv.calocybe.dyndns.org/specs/NetscapeCommunications/JavaScript13ClientReference/object.htm#1193350
Function.toString: http://docserv.calocybe.dyndns.org/specs/NetscapeCommunications/JavaScript13ClientReference/function.htm#1193615
Eine Methode ist _nie_ eine Eigenschaft. Das sind zwei vollkommen verschiedene Dinge!
Das ist ganz genau falsch rum. Eine Methode ist *immer* eine Eigenschaft. Es ist eine Eigenschaft von Typ Function. Man kann mit dieser Eigenschaft umgehen wie mit jeder anderen, d.h. insbesondere auch an andere Eigenschaften zuweisen, womit man dann zwei Methoden hat, die dasselbe tun.
alert(TestObjekt.ArrayNachString());
Das ruft die Methode auf und zeigt ihren Rueckgabewert an.
alert(TestObjekt.ArrayNachString);
Das ruft automatisch die Methode toString() des Function-Objektes auf (also TestObjekt.ArrayNachString.toString()), da alert() einen String-Kontext vorgibt.
- Das Zweite Problem das ich habe, ist dass ich gerne in der Methode (hier ArrayNachString) die Variablen / Arrays der Hauptklasse verwenden würde, über "this" geht das aber anscheinend nicht.
Sollte aber, sonst versteh ich kein OOP mehr... Entweder war das ein Folgefehler, oder ich verstehe deine Aussage nicht ganz.
Geht mir auch so. Der Code sieht fuer mich ok aus. Vielleicht sollte Beny uns was ueber evtl. auftretende Fehlermeldungen erzaehlen?
Gibt es so etwas wie eine "parent" Referenz oder muss ich das Parent-Objekt in diesem Fall immer über "this" zu den Methoden mitschleifen?
Sowas aehnliches gibt es. Heisst __proto__, und zum Verstaendnis solltest Du Dir vielleicht http://docserv.calocybe.dyndns.org/specs/NetscapeCommunications/JavaScript13ClientGuide/obj2.htm durchlesen. Sollte aber fuer diesen Fall eigentlich nicht notwendig sein.
Nein, es gibt kein Parent-Objekt (zumindest in deinem Fall nicht). Die Daten der Klassen-instanz werden über this angesprochen.
Die Begriffe Klasse und Instanz gibt es in JavaScript so nicht, da JS keine klassenbasierte Sprache ist, sondern Prototypbasiert. IMHO ein wirklich beklopftes Konzept, aber wenn es Dich genau interessiert, siehe obigen Link.
So long
--
Falscher oder fehlender Kaffee. Benutzer angehalten.