membervariablen gelöscht
Frühstücker
- javascript
0 Don P0
Struppi
0 Cheatah0 Frühstücker0 Cheatah
Hallo zusammen
hab ein ziemlich beknacktes Problem
Total banane:
function colorslider(startRGB,endRGB,steps)
{
...
this.dR = 0;
this.dG = 0;
this.dB = 0;
...
this.set = set;
set(startRGB, endRGB, steps);
alert('dR = '+this.dR+' dR = '+this.dG+' dB = '+this.dB);
}
...
function set(startRGB,endRGB,steps)
{
...
// dR,dG,dB werden berechnet
...
alert('dR = '+this.dR+' dR = '+this.dG+' dB = '+this.dB);
}
Beim erzeugen eines colorsliders spuckt alert in der set() fkt
zuerst die korrekt berechneten Zahlen aus.
Direkt danach in der colorslider() Fkt sind dann plötzlich alle Variablen wieder = 0 . . . gelöscht.
Was das denn ???!?!? Hab ich was verpeilt oder javascript.
Ist im FF und im IE dasselbe.
Wenn ich die
this.dR = 0;
this.dG = 0;
this.dB = 0;
herausnehme berechnet er auch korrekt, aber hinterher sind alle
Variablen 'undefined'.
Banane . . :-V
Vielleicht kann mich jemand aufklären was hier los ist . .
Danke im voraus
Hallo,
Was das denn ???!?!? Hab ich was verpeilt oder javascript.
Das bist du...
alert('dR = '+this.dR+' dR = '+this.dG+' dB = '+this.dB);
Worauf bezieht sich wohl jeweils "this"?
Gruß, Don P
Hallo,
Was das denn ???!?!? Hab ich was verpeilt oder javascript.
Das bist du...
alert('dR = '+this.dR+' dR = '+this.dG+' dB = '+this.dB);
Worauf bezieht sich wohl jeweils "this"?
Gruß, Don P
Habs noch nich :
Die set Fkt ist member der colorslider Fkt und greift per this auf dessen membervars zu.
Richtig?
In der colorslide Fkt UND auch von ausserhalb bleiben die Variablen jedoch 0 bzw. undefined.
Hab es jetzt mal so geprüft:
var a = new colorslider(a,e,d)
alert('dR = '+a.dR+' dR = '+a.dG+' dB = '+a.dB);
. . . dasselbe Ergebnis.
stehe immernoch auf dem Schlauch . . .
hab ein ziemlich beknacktes Problem
Es ist ja ok, wenn du dich ein bisschen flapsig ausdrückst, nur wird es dadurch etwas schwieriger dein Problem zu verstehen.
function colorslider(startRGB,endRGB,steps)
{
...
this.dR = 0;
this.dG = 0;
this.dB = 0;
...
this.set = set;
So, hab ich früher auch Memberfunktionen deklariert, ist aber nicht schön. In deinem Fall bietet sich protoype an
colorslider.prototype.set = .....
Dann sparst du dir das this.set = set
set(startRGB, endRGB, steps);
Das ist Unfug, wo ist das Objekt?
Struppi.
Hi,
function colorslider(startRGB,endRGB,steps)
{
[...]
set(startRGB, endRGB, steps);
was macht diese in keinem Zusammenhang mit colorslider() stehende Funktion?
Beim erzeugen eines colorsliders spuckt alert in der set() fkt
zuerst die korrekt berechneten Zahlen aus.
Direkt danach in der colorslider() Fkt sind dann plötzlich alle Variablen wieder = 0 . . . gelöscht.
Gelöscht? Sie wurden nie gesetzt. set() tut irgendwas, hat aber keinerlei Bezug auf das colorslider()-Objekt. Dazu muss es nicht nur eine Methode des Objektes sein, sondern auch entsprechend angesprochen werden.
Cheatah
Hi,
function colorslider(startRGB,endRGB,steps)
{
[...]
set(startRGB, endRGB, steps);was macht diese in keinem Zusammenhang mit colorslider() stehende Funktion?
Beim erzeugen eines colorsliders spuckt alert in der set() fkt
zuerst die korrekt berechneten Zahlen aus.
Direkt danach in der colorslider() Fkt sind dann plötzlich alle Variablen wieder = 0 . . . gelöscht.Gelöscht? Sie wurden nie gesetzt. set() tut irgendwas, hat aber keinerlei Bezug auf das colorslider()-Objekt. Dazu muss es nicht nur eine Methode des Objektes sein, sondern auch entsprechend angesprochen werden.
Cheatah
Keinerlei bezug? nagut! Ich dachte das wäre so miteinander Verknüpft!
Dann weiss ich jetzt zumindest das es so nicht geht!
Dann such ich mal nach dem richtigen Weg . . . .
greetz
Hi,
Keinerlei bezug? nagut! Ich dachte das wäre so miteinander Verknüpft!
durch ein "this.irgendwas = set;" hast Du die Funktion set() nicht verändert. Insbesondere hast Du sie nicht auf eine Objektinstanz eingeschworen, zu der es noch siebzehnmilliarden andere Objektinstanzen geben kann, die sich alle das selbe Recht auf die Funktion anmaßen.
Dann such ich mal nach dem richtigen Weg . . . .
Take 'this' way ;-)
Cheatah