molily: OO Backgroundcolorchanger - optimieren /Kontext von this

Beitrag lesen

Meinst du, man sollte Objektmethoden nicht als Event-Handler verwenden? Wieso?

Nun ja, dann ist das Objekt wohl eher ein Namespace für eine Methodensammlung, die mit Eventhandlern verknüpft werden.

Objekte, vor allem in JavaScript, sind immer Namespaces für Methoden sowie Status-Variablen.

Ich dachte halt, wenn "this" da zu Verwirrungen führt ist es vielleicht "falsch", dort mit "this" auf das Objekt zu verweisen, obwohl doch schon klar ist, dass das Objekt nur als Funktionsträger für Events fungiert.

Ein Objekt kann zur bloßen Gruppierung von Methoden genutzt werden. In der Regel speichert man dort aber einen bestimmten State. Die Methoden ändern diesen State oder geben ihn aus. Es ergibt daher Sinn, dass die Methoden für Event-Handling, also Eingabe, und DOM Scripting, also Ausgabe genutzt werden.

Aber vermutlich, wenn du das so schreibst, wird das so nicht praktiziert.

Man kann natürlich durchaus eine Abstraktionsschicht einbauen, die die Aufgaben trennt, zum Beispiel Model-View-Controller. Damit würden Event-Handler nicht direkt die Daten ändern.

Nur im Kontext des Codes geht es unter oder wird falsch interpretiert, weil nicht klar ist Verwirrung herrscht, wem der Code nun zugeordnet wird, welchem Objekt.

Function Binding bzw. die Nutzung von call und apply widmet sich genau diesem Problem, indem die Funktion einem bestimmten Objekt zugeordnet wird und diese Zuordnung bei sämtlichen Aufrufen beibehalten wird.

Logisch ist es natürlich, dass jeder Event-Handler im Kontext des Elements ausgeführt wird – wobei man das für Event-Handling längst nicht braucht, siehe oben.

Ich dachte IE braucht das? Wieder was nicht verstanden, vielleicht doch schon zu spät heute ...;

Wenn man im IE < 9 auf e.currentTarget zugreifen will, dann benötigt man das ursprüngliche this. Ansonsten kann man den Handler an ein anderes Objekt binden, wie man lustig ist.

Mathias

0 59

OO Backgroundcolorchanger - optimieren /Kontext von this

jobo
  • javascript
  1. 0
    unknown
    1. 0

      OO - optimieren /Kontext von this - was macht der Browser da?

      jobo
      1. 0
        unknown
        1. 0
          jobo
          1. 0
            unknown
            1. 0
              jobo
              1. 0
                unknown
                1. 0
                  jobo
                  1. 0
                    unknown
  2. 0
    ChrisB
    1. 0
      jobo
      1. 0
        ChrisB
        1. 0
          jobo
          1. 0
            molily
            1. 0
              jobo
      2. 0
        molily
        1. 0
          jobo
          1. 0
            molily
            1. 0

              OO bgColorChanger - next try: alles in einem Objekt

              jobo
              1. 0

                OO bgColorChanger - next try: alles in einem Objekt - kl. opt.

                jobo
                1. 0
                  unknown
                  1. 0
                    jobo
                    1. 0
                      jobo
                      1. 0

                        colorChanger - rein funktional - Feinschliff

                        jobo
                        1. 0
                          jobo
                          1. 0

                            colorChanger - Feinschliff en Detail, macht das Sinn?

                            jobo
                            1. 0
                              molily
                              1. 0
                                jobo
                                1. 0
                                  molily
                          2. 0
                            molily
                            1. 0
                              jobo
                              1. 0
                                unknown
                                1. 0
                                  jobo
                                  1. 0
                                    unknown
                                2. 0
                                  molily
                                  1. 0
                                    unknown
                  2. 2
                    molily
                    1. 0
                      unknown
                      1. 0
                        molily
                        1. 0
                          molily
                          1. 0
                            unknown
                            1. 0
                              jobo
                            2. 0
                              jobo
                            3. 0

                              OO bgColorChanger - mit Closure (verschachtelte Objekte)

                              jobo
                            4. 0
                              molily
                              1. 0

                                OO bgColorChanger - elegant oder zumindest vernünftig!

                                jobo
                    2. 0
                      jobo
                    3. 0

                      bgColorChanger - OO vs. funktional

                      jobo
                      1. 1
                        molily
                        1. 0
                          jobo
  3. 0

    OO - Zugriff auf Objektmethode mittels Namen als Stringparameter

    jobo
    1. 0
      unknown
      1. 0
        jobo
        1. 0
          ChrisB
          1. 0
            jobo
        2. 0
          unknown
    2. 0
      molily
      1. 0
        jobo