Ja, het is eindelijk gelukt, om een functie in een object vanuit dat eigen object aan te roepen via een interval of timeout.
Het probleem:
Je krijgt problemen als je iets probeert om een functie vanuit een object aan te roepen via een setInterval met het this keyword.
setInterval is een method van het window object, en this zal dus op het window object slaan, en niet op het object vanwaar je die setTimeout functie aanroept.
De truc:
Sla de referentie naar de aan te roepen functie op in een propertie van het window object, bijvoorbeeld zo:
Het object slaat de referentie naar de juiste functie op in een array. Een array, omdat dit vooral handig is bij het maken van timer objecten. Het zou voor een enkele timer net zo goed één variabele kunnen zijn.
Volgens mij is nu ook de laatste telg van de eval familie overbodig geworden, daar ik nu denk dat bijna alles nu volledig object-oriented te doen is.
[edit]
In mijn enthousiame ben ik vergeten om te vermelden dat oh,when? er op IRC over begon
Ik verwacht hem dan ook vrij spoedig met een compleet timerobject
Het probleem:
Je krijgt problemen als je iets probeert om een functie vanuit een object aan te roepen via een setInterval met het this keyword.
code:
1
| setInterval(this.woei, 500); |
setInterval is een method van het window object, en this zal dus op het window object slaan, en niet op het object vanwaar je die setTimeout functie aanroept.
De truc:
Sla de referentie naar de aan te roepen functie op in een propertie van het window object, bijvoorbeeld zo:
code:
1
2
3
4
5
6
7
8
9
10
11
| myIntervalFunctions = new Array();
function WoeiObject() {
this.woei = function() {
alert("Woei!");
}
myIntervalFunctions[0] = this.woei;
setTimeout(myIntervalFunctions[0], 5000);
}
myObject = new WoeiObject(); |
Het object slaat de referentie naar de juiste functie op in een array. Een array, omdat dit vooral handig is bij het maken van timer objecten. Het zou voor een enkele timer net zo goed één variabele kunnen zijn.
Volgens mij is nu ook de laatste telg van de eval familie overbodig geworden, daar ik nu denk dat bijna alles nu volledig object-oriented te doen is.
[edit]
In mijn enthousiame ben ik vergeten om te vermelden dat oh,when? er op IRC over begon
[ Voor 0% gewijzigd door Verwijderd op 02-08-2002 00:56 . Reden: credits ;) ]