![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Ich schaue mir gerade die JSON Syntax an und möchte diese gerne zukünftig für meine Klassen bzw. Objekte verwenden. Was ich jedoch nicht verstehe, ist die Definition von privaten Methoden und Eigenschaften, wie kann ich diese unterscheiden? |
#3
| |||
| |||
|
|
JSON Syntax ist JavaScript Syntax, und JSON unterstützt Methoden gar nicht; was JavaScript angeht gibt es derzeit keine Möglichkeit die Sichtbarkeit von Feldern zu beeinflussen, du musst auf Konventionen ausweichen, z.B. einen führenden "_" für privates verwenden. |
#4
| |||
| |||
|
|
Ein JS-Konstruktor schaut so aus: foo = new bar(); function bar() { ... } |
|
machen Properties beim Prototypen (abgesehen von Ausnahmen wie Identifizierungs- oder Versionsstrings) eh keinen Sinn. |
#5
| |||
| |||
|
|
Gregor Kofler wrote: Ein JS-Konstruktor schaut so aus: foo = new bar(); function bar() { ... } Auch dieses bar ist nur dann ein Konstruktor im Unterschied zu einer Factory, wenn es keinen Rückgabewert hat. Sobald bar einen Rückgabewert liefert, arbeitet es nur noch als Factory und initialisiert nicht mehr das mit new erzeugte Objekt. IMO machen Properties beim Prototypen (abgesehen von Ausnahmen wie Identifizierungs- oder Versionsstrings) eh keinen Sinn. Doch, wenn sie nur gelesen und nicht verändert werden. Sie haben aber auch als veränderliche Properties einen Sinn, wenn es sich um Objekte handelt, die dann nämlich shared sind, solange nur deren Eigenschaften verändert werden und nicht die Referenz selbst. Daß diese Leute ihre Bibliothek ausgerechnet Prototype genannt haben, ist sehr unglücklich, denn das vermehrt noch zusätzlich die Verwirrung um den leistungsfähigen Prototypen-Mechanismus von JavaScript. |
#6
| |||
| |||
|
#7
| |||
| |||
|
|
Brian Finn wrote: Private Eigenschaft: function objekt(){ var eigenschaft = irgendwas; function Funktion1() { eigenschaft kann nur in dieser Funktion gelesen werden... } } Das ist keine Private Eigenschaft, sondern die Konstruktion ist eine Closure. In diesem Beispiel ist auch Funktion1 weggesperrt, weil es keinem öffentlichen Objekt zugewiesen wird. |
#8
| |||
| |||
|
|
Brian Finn wrote: Das hier meinst Du doch nicht ernst. Bei jeder neuen Instanz änderst Du den Prototypen. Als Ergebnis verwenden alle Instranzen einen gemeinsamen Zähler, der mit jeder neunen Instanz auf 0 zurückgesetzt wird. So etwas kriegst Du mit privaten Eigenschaften etc. nicht hin. Es ist eben Closure Magic. Wenn Du das dann auch noch mit Settern und Gettern kombinierst ... |
#9
| |||
| |||
|
![]() |
| Thread Tools | |
| Display Modes | |
| |