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

Beitrag lesen

Hallo,

Kriegt man das besser/übersichtlicher bzw. einfacher hin? Ich übergebe der Objektmethode getValue jetzt immer das eigene Objekt mit, denn "this" verweist ja durch setInterval dann bereits aufs Windows-Objekt, oder?
Das this von myBgColorChange, du willst ja aber this innerhalb von colorHandler.getValue und dort ist der Kontext colorHandler wie man sieht.

Komisch, vorhin ging es im Browser mit FF allein mit "this". Dann ging es nicht, und ich habe mit thisObj und der Übergabe als Parameter gearbeitet.

Jetzt geht es auch mit this. Was meinst du mit "wie man sieht"? Ich dachte jetzt, "this" bezöge sich immer auf den aufgerufenen Kontext?

Das hier läuft grade bei mir im Broser:

  
<script type="text/javascript">  
var createColorObj;  
createColorObj = function (value, range) {  
    return {  
        "value": value,  
        "tmpValue" : value,  
        "range" : range,  
        "goDown" : true  
    };  
};  
var createColorHandler;  
createColorHandler = function (red, green, blue) {  
    return {  
        // second parameter is range in which color is to be changed  
        "red": createColorObj(red, 55),  
        "green": createColorObj(green, 10),  
        "blue": createColorObj(blue, 16),  
        getValue : function (colorName) {  
            if (this[colorName].tmpValue < this[colorName].value - this[colorName].range) {  
                this[colorName].goDown = false;  
            }  
            if (this[colorName].tmpValue > this[colorName].value) {  
                this[colorName].goDown = true;  
            }  
            if (this[colorName].goDown) {  
                this[colorName].tmpValue -= 1;  
            } else {  
                this[colorName].tmpValue += 1;  
            }  
            return this[colorName].tmpValue;  
        }  
    };  
};  
window.onload = function () {  
    var myBody, colorHandler, myBgColorChange;  
    myBody = document.getElementsByTagName("body")[0];  
    colorHandler = createColorHandler(255, 168, 136);  
    myBgColorChange = function () {  
        var red, green, blue;  
        red = colorHandler.getValue("red");  
        green = colorHandler.getValue("green");  
        blue = colorHandler.getValue("blue");  
        myBody.style.backgroundColor = "RGB(" + red + "," + green + "," + blue + ")";  
    };  
    myBgColorChange();  
    window.setInterval(myBgColorChange, "120");  
};  
</script>  
<body>  
</body>  

Aber eben hatte ich auch     window.setInterval("myBgColorChange()", "120");
und die Fehlerkonsole meint, myBgColorCange sei nicht definiert. Habe es umgeschrieben in     window.setInterval(myBgColorChange, "120"); und es ging. Keine Ahnung warum ???

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