Struppi: privat und (pseudo-)"Klassen" - Prototype und Scopevariablen

Beitrag lesen

Wie auch bereits gesagt, dieser Thread handelt nicht davon, ob und wie man irgend etwas mit JS lösen kann oder nicht. Sondern darum, dass ein Framework/Bibliothek vorgestellt wurde, das versucht private/protected/public in JS zu simulieren.

Äh, das verstehe ich nicht. Beim Versuch das zu simulieren geht es doch genau darum, "ob und wie man irgend etwas mit JS lösen kann", und falls es möglich ist, ob das etwa umständlicher ist als sonst.

Genau um dieses thema sollte sich der Thread ursprünglich dregen.

Aber an der Stelle wo du jetzt eingestiegen bist, ging es nur noch um die Grundsätzliche Behauptung von mir, dass es mit JS schwierig ist, ein strengeres OO Konzept umzusetzen. Weil ich dies als Argument für den Aufwand einer solchen Bibliothek gebracht habe.

Ich hatte mich auf deine plakative Aussage bezogen:

Die Kapselung erfolgt nicht so, dass sie für einen OO Ansatz wirklich verwendbar ist.

Deshalb habe ich nachgefragt, ob denn private Variablen mit dem üblichen Get/Set (wie z.B. in C#) etwas anderes sind als Closures mit Getter/Setter in JavaScript. Außer der konkreten Syntax ist es doch dasselbe.

Weiß ich nicht, ich kenn mich mit C# nicht aus. Wie auch immer, es geht nicht um getter/setter. Es geht um die Gültigkeit der Variabel. In JS ist diese Funktionsweit, es gibt keine Klassenweite Variabeln.

Und solche "halbprivaten" Variablen wie von dir im Beispiel verlangt, gibt es doch in anderen Sprachen auch nicht, oder vielleicht doch? Wenn nicht, wären die für einen OO-Ansatz ebensowenig geeignet.

Doch sie gibt es. Ich verlange auch keine Halbprivaten Variabeln, sondern das war Pseudocode, der zeigen sollte, dass es in JS keine echte Klassenweiten privaten Variabeln gibt.

Im Fall von Closures mit Getter/Setter ist es m.E. kein Simulieren von klassischem OO-Verhalten, sondern tatsächlich dasselbe, nur mit etwas anderer Syntax, was man einer Programmiersprache wohl zugestehen darf.

Es ist ein Unterschied, ob du in der Konstruktorfunktion eine Memberfunktion deklarierst (was du musst, wenn du mit echten privaten Werten arbeiten willst) oder ob du diese dem prototype des Konstruktors zuweist.

Das ist für mich ein simulieren einer privaten Klassenvariabeln, durch die Fähigkeit von JS, zur Laufzeit Funktionen an die Instanz hinzuzufügen. Hat aber den Nachteil eines langsameren Konstruktors, eines unübersichtlichen Konstruktor und dass alle Funktionen, die ebenfalls auf diese Variabel zugreifen können sollen, ebenfalls innerhalb des Konstruktors definiert werden müssen.

Deshalb muss man sich bei wirklich Geschwindigkeitsrelevanten Anwendungsfällen überlegen, ob man nicht lieber auf die strenge Kapselung verzichtet und eine durch Namenskonvention pseudo private Variabel verwendet, da dies deutlich schneller ist.

Struppi.

0 112

public protected and private in javascript

Florian Bücklers
  • javascript
  1. 0
    Struppi
    1. 0
      jobo
      1. 0
        jobo
      2. 0
        Florian Bücklers
        1. 1

          Standortbestimmung: Programmierparadigmen, OOP, OOP in JS ...

          peterS.
          1. 0
            Florian Bückkers
            1. 0
              peterS.
              1. 0
                jobo
              2. 0
                Florian Bücklers
              3. 2
                peterS.
                1. 0
                  peterS.
            2. 3
              molily
      3. 0
        molily
        1. 0
          jobo
  2. 1
    Struppi
    1. 0
      Florian Bücklers
  3. 2
    molily
    1. 0

      javascripts oop und ein beispiel

      jobo
      1. 0
        Struppi
    2. 1
      Florian Bücklers
      1. 1
        molily
        1. 0
          Struppi
          1. 1
            molily
            1. 0
              Struppi
              1. 0
                jobo
                1. 0
                  Struppi
              2. 1
                molily
                1. 0
                  Struppi
                  1. 0
                    molily
                    1. 0
                      Struppi
                      1. 0
                        jobo
                        1. 0
                          Struppi
                          1. 0
                            jobo
                          2. 1
                            molily
                            1. 0
                              jobo
                              1. 0
                                jobo
                  2. 1
                    molily
                2. 0
                  Florian Bücklers
                  1. 0
                    jobo
                    1. 0
                      Struppi
                      1. 0
                        jobo
                        1. 0
                          Struppi
                          1. 0
                            jobo
                            1. 0

                              was ist OOP und gibt es eine Implementation in Ecmascript

                              jobo
                            2. 0

                              OOP in Javascript - Object prototypisch erweitern

                              jobo
                            3. 0
                              Struppi
                              1. 0
                                jobo
                                1. 0

                                  protected und Javascript - übergeordnetes (Sicherheits-)Konzept

                                  jobo
                                2. 0
                                  Struppi
                                  1. 0
                                    jobo
                                    1. 0

                                      Diskussionszusammenfassung auf Wikipedia

                                      jobo
                                      1. 0
                                        Struppi
                                        1. 2
                                          molily
                                          1. 0

                                            Diskussionszusammenfassung von molily und node.js

                                            jobo
                                            1. 0
                                              Struppi
                                              1. 0

                                                der Punkt um den es geht ... Privatheitskonzept von Javascript

                                                jobo
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    jobo
                                                  2. 0

                                                    serverseitiges Javascript - node.js

                                                    jobo
                                                    1. 0
                                                      peterS.
                                                  3. 0

                                                    mitlesender

                                                    peterS.
                                                    • menschelei
                                                    1. 0
                                                      JürgenB
                                            2. 0
                                              molily
                                              1. 0

                                                Diskussionszusammenfassung von molily, node.js und loops

                                                jobo
                      2. 2
                        molily
                        1. 0
                          Struppi
                          1. 0

                            Privatheitskonzept in Javascript

                            jobo
                            1. 0
                              Struppi
                          2. 0
                            molily
                            1. 1
                              molily
                          3. 0
                            jobo
                            1. 0

                              Codereuse und DesignPatterns OOP ohne Vererbung und POO

                              jobo
                              1. 0
                                JürgenB
                                1. 0
                                  jobo
                          4. 0
                            Don P
                            1. 0

                              privat und (pseudo-)"Klassen" - Prototype und Scopevariablen

                              jobo
                              1. 0
                                Don P
                                1. 0
                                  Struppi
                                  1. 0
                                    Don P
                                    1. 0
                                      Struppi
                                      1. 0
                                        Don P
                                        1. 0
                                          Struppi
                                          1. 0

                                            Konstruktor-Closure vs. Prototyp

                                            molily
                                            1. 0
                                              jobo
                                          2. 0
                                            jobo
                                            1. 0
                                              jobo
                                            2. 0
                                              Struppi
                                              1. 0
                                                jobo
                                                1. 0

                                                  Crockfords "module pattern" - unabhängig von YUI(YAHOO)

                                                  jobo
                                                2. 0
                                                  peterS.
                                                  1. 0
                                                    jobo
                                                    1. 0
                                                      Struppi
                                                      1. 0
                                                        jobo
                                                        1. 0
                                                          Struppi
                                                          1. 0

                                                            Performance und "this" im Kontruktor

                                                            jobo
                                                            1. 0
                                                              Struppi
                                                              1. 0
                                                                jobo
                                                                1. 0
                                                                  Struppi
                                                                  1. 0
                                                                    jobo
                                                  2. 0
                                                    Don P
                                                    1. 0

                                                      private mit "revealing module patter" und "speaking code"

                                                      jobo
                                                    2. 0
                                                      Struppi
                                    2. 0
                                      jobo
                                      1. 0
                                        Struppi
                                        1. 0
                                          jobo
                            2. 0
                              Struppi
                  2. 1
                    molily
            2. 0
              jobo
              1. 2
                molily
              2. 1
                molily
                1. 0
                  jobo