http://www.peterkropff.de/site/javascript/konstruktor_besonderheiten.htm
Imho eine der besten Seiten zum Thema Javascript überhaupt.
Diese Site kann ich absolut nicht empfehlen. Sie war einmal besser, bis der Autor sie überarbeitet hat. Darunter hat nicht nur der Ton gelitten. Da der Autor JavaScript (z.B. Closures) nicht wirklich verstanden hat, hat er bloß versucht, seinem Ärger Ausdruck zu verleihen und dabei ist ziemlicher Quatsch herausgekommen.
Man sieht es z.B. an der dortigen »globalen Methode«, die selbstverständlich Quatsch ist, weil sie nichts mit OOP/Konstruktoren zu tun hat und es kein Grund gibt, so etwas (innerhalb eines Konstruktors) zu tun.
Das var that = this;
hat er sich abgeschaut, anscheinend ohne es wirklich zu verstehen.
Zitat:
»Wenn man innerhalb einer privaten/globalen/anonymen Methode/Funktion der entsprechenden Konstruktorfunktion mit this arbeitet, so verweist das nicht auf das eigene sondern auf das window-Objekt! Is wahr! Ich schwör, Aaalder! Darum muss man in so einem Fall auch einen Umweg gehen.«
Das ist inhaltlich schlicht falsch und bringt viele Begriffe durcheinander.
Korrekt ist, innerhalb einer lokalen, »privaten« Funktion im Konstruktor (es ist keine Methode im strengen Wortsinne, es gibt keine wirklichen privaten Methoden) hat man keinen Zugriff auf die Instanz, wenn man sie einfach über funktion()
und nicht funktion.call(this)
o.ä. aufruft. Daher kann man im Konstruktor var that = this;
und alle Funktionen darin haben auf that Zugriff, weil sie Closures sind.
»Globale Methoden« gibt es nicht und ob eine Funktion anonym ist oder nicht, ist noch einmal etwas ganz anderes.
Allgemein stiftet diese Doku also eher Verwirrung, schade, denn der ursprüngliche Anspruch des Autors ist zu würdigen.
Mathias