JavaScript - Emular una Clase

 
Vista:

Emular una Clase

Publicado por Skatu (1 intervención) el 13/07/2013 12:26:45
Hola.
Estoy intentando emular una Clase en JavaScript y obtengo un resultado inesperado.
La clase inicializa una varables, y desde una función primero los imprimo en la consola, y luego llama a otra funcion que se ejecutará con cierto periodo. En esta última función también hago imprimer las variables, pero no las reconoce.
Este es el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function prueba(){
	p = new pruebaClass();
	p.start();
}
 
function pruebaClass(){
	this.x=5;
	this.y=10;
	this.f=1000;
	this.start = function(){
		console.log('(X,Y) :=> ('+this.x+','+this.y+')');
		this.id=setInterval(this.run,this.f);
	}
	this.run = function(){
		console.log('(X - Y) = ('+this.x+' - '+this.y+')');
	}
	this.stop = function(){
		clearInterval(this.id);
	}
}
 
Este es el resultado
Este es el resultado
 
(X,Y) :=> (5,10)
(X - Y) = (undefined - undefined)
(X - Y) = (undefined - undefined)
(X - Y) = (undefined - undefined)
(X - Y) = (undefined - undefined)
...


El caso es que es importante que en la función que se ejecuta cada cierto tiempo, las variables estén visibles para poder realizar el objetivo de la clase.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Emular una Clase

Publicado por martin (45 intervenciones) el 13/07/2013 20:06:33
en setinterval em lugar de poner this.run pone function(){this.run();}.bind(this),o directamente this.run.bind(this) pasa q cuando llama a ls funcion this se refiere al timer y no al objeto en si
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar