molily: Object Oriented Programming in Javascript

Beitrag lesen

Mein Problem dabei ist, dass ich laut eines Anwendungsbeispiels(http://mckoss.com/jscript/object.htm) mit this.hoverOn auf mein im constructor definiertes Attribut zugreifen kann innerhalb der Methode Rating.prototype.starsMouseover.

Lies dir mal diesen Artikel durch:
http://aktuell.de.selfhtml.org/artikel/javascript/organisation/
Speziell ab diesem Absatz:
http://aktuell.de.selfhtml.org/artikel/javascript/organisation/#object-methoden-und-kontext

Dort wird die dir von Struppi empfohlene Methode erklärt sowie andere.

Wieso macht er das nicht?

Der Begriff dafür ist: Kontext!
Eine Methode wird immer im Kontext eines Objektes ausgeführt.

Die Bedeutung von this ist folgendermaßen:
1. Es gibt ein Objekt und daran hängt ein Funktionsobjekt als Unterobjekt bzw. Methode. Die Funktion ist also über objekt.methode ansprechbar.
2. Wenn diese Funktion nun folgendermaßen aufgerufen wird: objekt.methode(), dann und nur dann verweist this in der Funktion auf »objekt«. Andernfalls, wenn die Funktion nicht auf diese Weise aufgerufen wurde, verweist this als Fallback auf das globale Objekt window. Nichts anderes gibt this wieder als diese Unterobjekt-Beziehung beim Aufruf. (Trickserei mit call() und apply() mal außen vor.)

In deinem Fall liegt noch ein Sonderfall vor: Der Mouseover-Event-Handler wird im Kontext des HTML-Elements ausgeführt, bei dem der Event-Handler registriert wurde. this zeigt in dieser Funktion also auf dieses Element (siehe auch).

Mathias