Struppi: public protected and private in javascript

Beitrag lesen

Also was sagt ihr?

Mittlerweile habe ich deinen Ansatz verstanden.

Die Idee mit den Scopes für private, public, protected erscheint mit genial. Ich hätte aber damit ergebliche Schwierigkeiten, da ich es mir angewöhnt habe private Variabeln so zu nennen wie die Getter/Setter Funktionen und nicht setName/getName (Das ist wohl vor allem in Java Bereich so üblich).

Das funktioniert dann aber nicht mit deinem Framework, weil dann die Funktion überschrieben würde:

  
Object.extend('A', function() {  
    public.a = function(p) {  
        this.a = p;  
    }  
});  
  
var b = new A();  
alert('a() ist: ' + b.a());  
alert('a() ist: ' + b.a());  

Fehler: b.a is not a function

Dann kollidiert dein Skript mit mootools (und anderen FW, die Object.create erzeugen).

Das Problem ist, wenn die Funktion Object.create wie von Crockford verbreitet eingebunden wird, wirft das Skript einen Fehler.

Im Webkitbrowser müssen erst die Schlüsselwörter class und public gegen andere Namen ersetzt werden.

Das ist das Ergebnis meines Benchmarks, der aus einer Funktion besteht, die zwei Instanzen erzeugt und dann fünfmal die Funktion d() aufruft (s. anderes Posting von mir).

Das sind die Zahlen:

js            = Eine Verberbunsghierachie nur mit js
class         = ist deins
joose         = http://code.google.com/p/joose-js/
create/getter = sind zwei Ansätze von mir

FF:
js:............  21ms = 47.619/sek.....
getter:........  69ms = 14.492/sek.....
create:........ 113ms = 8.849/sek......
joose:......... 250ms = 4.000/sek......
class:......... 541ms = 1.848/sek......

Opera:
js:............  20ms = 100.000/sek....
joose:.........  48ms = 41.666/sek.....
create:........  64ms = 31.250/sek.....
getter:........ 107ms = 18.691/sek.....
class:......... 610ms = 3.278/sek......

Webkit
js:............  57ms = 35.087/sek.....
getter:........  81ms = 24.691/sek.....
create:........ 134ms = 14.925/sek.....
joose:......... 148ms = 13.513/sek.....
class:......... 691ms = 2.894/sek......

Alles in allem würde ich sagen, die Idee ist gut. Doch der Versuch OOP Paradigmen mit JS umzusetzen, ist immer mit viel Kosten verbunden. Sehr informativ in dem zusammenhang ist der Blog von Andrea Giammarchi der auch einige Benchmarks gemacht hat und am Ende ebenfalls eine Funktion zum erzeugen von Klassen vorstellt.

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