Philipp Hasenfratz: prototype und return werte

Beitrag lesen

Halihallo Calocybe

->>> 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.

So lautet die Theorie zur Praxis, Beny :-)

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.

Schade eigentlich, hätte gerne gewusst, wie document.write() intern funktioniert...

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.

Ja, da hast du selbstverständlich recht. Anscheinend muss ich die grundlegenden Begriffe von OOP mal lernen :-)

  1. 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?

Entweder das, oder mal sagen, ob diese Frage noch aktuell ist. Ich habe nämlich das gefühl, das sie bereits aus dem Kontext beantwortet wurde. Wenn nicht: Beny: Schau mal bei google rein mit den Keywords JavaScript und OOP, da wirst du geholfen :-)

Gibt es so etwas wie eine "parent" Referenz oder muss ich das Parent-Objekt in diesem Fall immer über "this" zu den Methoden mitschleifen?

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.

Ich werde mir deine Links auf jeden Fall mal ansehen, obwohl ich alles andere, als ein JS-Programmierer bin...

Falscher oder fehlender Kaffee. Benutzer angehalten.

Du bringst mich da grad auf eine gute Idee. Los, an die Kaffemaschine. Ich muss fit werden, wird heute wieder ein langer Abend :-)
Gestern habe ich ca. 7dl Kaffee getrunken... Meine Güte, hat mein Magen sich gemeldet (aber jetzt ist das Bauchweh weg und alles beginnt von vorne) :-))

Viele Grüsse

Philipp