josteinaj Skrevet 15. desember 2009 Del Skrevet 15. desember 2009 (endret) Jeg lurer litt på hva x,y,z,a,b,c,arr ender opp med å være her (spesielt arr): function MinKlasse(arg) { this.x = arg; this.y = 2; this.z = 3; this.b = 4; this.c = 0; this.arr = new Array(); this.callback = function(fn) { fn(); }; } MinKlasse.prototype.a = 5; MinKlasse.prototype.minFunksjon = function(arg, self) { y = arg; this.z = arg; self.a = arg; self.callback(function() { self.b = arg; }); for (self.c = 0; self.c < 3; self.c++) { window.setTimeout( function(){ self.arr.push(self.c); }, 1000 ); } } var minKlasse = new MinKlasse(1); window.setTimeout( function(){ minKlasse.minFunksjon(6,minKlasse); }, 1 ); window.setTimeout(function() { document.write("x="+minKlasse.x+" (forventet 1)<br/>\n"); document.write("y="+minKlasse.y+" (forventet 2)<br/>\n"); document.write("z="+minKlasse.z+" (forventet 3)<br/>\n"); document.write("a="+minKlasse.a+" (forventet 6)<br/>\n"); document.write("b="+minKlasse.b+" (forventet 6)<br/>\n"); document.write("c="+minKlasse.c+" (forventet 3)<br/>\n"); document.write("arr[0]="+minKlasse.arr[0]+" (forventet 0)<br/>\n"); document.write("arr[1]="+minKlasse.arr[1]+" (forventet 1)<br/>\n"); document.write("arr[2]="+minKlasse.arr[2]+" (forventet 2)<br/>\n"); },1500); hmm... kanskje jeg rett og slett skal teste og se hva det blir... Endret 15. desember 2009 av Pion Lenke til kommentar
josteinaj Skrevet 15. desember 2009 Forfatter Del Skrevet 15. desember 2009 Fikk følgende resultat: x=1 (forventet 1) y=2 (forventet 2) z=6 (forventet 3) a=6 (forventet 6) b=6 (forventet 6) c=3 (forventet 3) arr[0]=3 (forventet 0) arr[1]=3 (forventet 1) arr[2]=3 (forventet 2) Altså har jeg lært: - 'this' er ikke så ubrukelig som jeg hadde inntrykk av; men jeg fortsetter nok med 'self' uansett. - teksten inni function(){ ... }-blokken ser ikke ut til å bli evaluert før den kjøres, altså foregår det i praksis en pass-by-reference istedenfor pass-by-value. greit å vite der svarte jeg på mitt eget spørsmål, men med litt flaks så kanskje noen andre lurte på det samme Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå