wucher wichtel: Verständnisproblem bei OOP mit Javascript

Beitrag lesen

Hallo!

Danke schön Cheatah. Du hast mich ziemlich zum Nachdenken gebracht :-) Ich hab den Thread schon gar nicht mehr beachtet. Deswegen schreibe ich jetzt erst.

Das Ergebnis der Alerts überrascht mich :) und vor allem verstehe ich es nicht.

  
this.toString = function() { return this.hex+this.R+this.G+this.B; }  

Wofür braucht man das "this" vor "toString"? toString ist doch keine Methode von Farbe?! Aber jetzt sehe ich, dass im Beispiel von SELFHTML folgendes steht:

  
var Dezimalzahl = 15.5;  
var Dualzahl = Dezimalzahl.toString(2);  

Was ist an toString so besonders? toString() ist eine Methode des Number-Objekts. write() ist eine Funktion des window-Objekts. Die Methode write() ruft man per document.write() auf. Deswegen müsste man doch eigentlich toString() so aufrufen: number.toString(). Oder? Ich habe irgendwie ziemlich große Probleme mit toString() :-)

Das 'Fertig' wird beim ersten Mal nicht ausgegeben, weil das Ausführen der Methode wegen dem return in der Zeile davor, schon abgebrochen wurde. Stimmt das? Und warum wird beim Aufruf durch

  
alert(Farbe("E0", "FF", "E0"));  

nicht die Zeile

  
this.toString = function() { return this.hex+this.R+this.G+this.B; }  

ausgeführt? Ok, ich weiß wieso. Weil eben beim Aufruf nicht new Farbe steht. Aber trotzdem habe ich es nicht verstanden. Warum interessiert sich JS nicht für diese Zeile. Ignoriert Javascript auch die folgenden Zeilen?

  
this.R = R;  
this.G = G;  
this.B = B;  

Was mich auch verwirrt, aber eigentlich nichts mit OOP zutun hat ist die Methode toString. In SELFHTML heißt es:

Wandelt eine Zahl in eine Zeichenkette (String) um.

Es wird aber die Funktion new Farbe() aber mit diesen Parametern aufgerufen: "E0", "FF", "E0". Aber diese Parameter sind zwar Hexzahlen, aber für Javascript sind es doch Strings. Sie werden ja auch in Anführungszeichen übergeben. Also warum braucht man eine Methode, die Zahlen in Strings umwandelt, wenn man schon Strings hat? Irgendwas habe ich falsch verstanden...

ciao, ww

--
Dies ist eine sehr einfache und effektive Sicherheitsstufe, aber nicht perfekt. Denn wenn mehrere User über eine Leitung ins Internet gehen, haben für den Webserver alle User die selbe IP. Und dann wirkt diese Sicherheitsstufe nicht mehr. Aber zumindest könnt ihr demjenigen, der euch die Session-ID geklaut hat, eins in die Fresse hauen.
http://tut.php-q.net/login.html