Timo "God's Boss" Reitz: Zugriff aus privater Methode in Prototype-Objekt auf this?

Beitrag lesen

Da muss ich dir leider unrecht geben. Methoden, die innerhalb des Konstruktors definiert sind, machen für mich den Code nur unleserlicher und schlechter zu verstehen und zu warten. Closures machen die Sache eben nicht einfacher.

Du musst die Methoden nicht im Konstruktor definieren, es reicht, wenn du ihnen die privaten Daten verfügbar machst.

Das wäre meine favorisierte Vorgehensweise. Zwar sind private Methoden dann nicht wirklich privat, aber so ist es nun mal. Die Wartbarkeit, Lesbarkeit und der geringere Speicherplatzbedarf sind für mich wichtiger als die tatsächliche Kapselung.

Es gibt dann schlicht keine privaten Methoden. "Ein bisschen privat" geht nicht.

Microsoft hat sich in seinem Client Framework übrigens auch für diesen Weg entschieden, und empfiehlt z.B. private Methoden durch einen _ am Anfang zu kennzeichnen.

Der Unterstrich am Anfang bedeutet aber nicht "private Methode", denn man kann sie von außen ja erreichen. Es bedeutet eher "diese Methode bitte nicht benutzen", wobei es wohl offensichtlicher Blödsinn ist, eine Methode öffentlich verfügbar zu machen, aber zu sagen, sie solle nicht benutzt werden.

(...)
ist doch wesentlich einfacher zu überblicken, als alles im Konstruktor zu notieren, mit var oder this. Außerdem ähnelt es dem Sprachbild anderer OO Sprachen viel mehr, was meiner Meinung nach ein großes Plus für die Wartbarkeit durch Dritte darstellt.

Die meisten anderen, vor allem die bekannteren, OO-Sprachen funktionieren aber anders als JavaScript.

--
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|