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

Beitrag lesen

Hallo,

Dann habe ich das jetzt mal alles in eine eigenes Objekt verpackt, um den allgemeinen Namensraum nicht zu verschmutzen. Und definiere im Timeout eine Funktion, die eine Objektmethode aufruft, um das "this" korrekt zu erhalten:

Weil du ja die Objektorientierung ins Spiel gebracht hat, könnte man jetzt einwenden, daß in diesem Fall eigentlich nur bgColorChange-Methode nach aussen sichtbar sein sollte, da alles andere eigentlich interne States sind.
Am Ende kann man dann auf ein eigenes Objekt verzichten. ;-)

function createColorHandler(elem, prop, red, redRange, green, greenRange, blue, blueRange) {

function createColorObj(v, r) {
      var value = v;
      var max = v;
      var range = r;
      var dir = 1;
      return function() {
        if (value <= max - range || value >= max) {
          dir *= -1;
        }
        value += dir;
        return value;
      };
    }
    var red = createColorObj(red, redRange);
    var green = createColorObj(green, greenRange);
    var blue = createColorObj(blue, blueRange);
    return function() {
      elem[prop] = "RGB(" + red() + "," + green() + "," + blue() + ")";
    };
};
window.onload = function () {
    var myBody = document.getElementsByTagName("body")[0];
    window.setInterval(createColorHandler(myBody.style, "backgroundColor", 255, 55, 168, 10, 136, 16), 120);
};

  
Macht es aber Sinn, den colorHandler immer wieder neu zu kreiren/createn? Kann es grad nich testen, aber werden dadurch Werte nicht wieder überschrieben? Ansonsten höre ich Crockford sagen: "JS is about functions". Hatte hier mal seine Memoizer-Funktion im Forum platziert: <http://forum.de.selfhtml.org/archiv/2011/5/t204981/#m1388909>. Und in dem Sinne aus meiner Sicht: Ist auf jeden Fall eine sehr feine Optimierung!  
  
Gruß  
  
jobo
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