mi pregunta es la siguiente:
Se puede hacer una llamada ya sea a un setInterval o a un setTimeout dentro de una clase sin necesidad de especificar el nombre de instancia que se la ha dado al objeto de dicha clase?
por ejemplo digamos que tengo esto:
Código :
function perrito(){
this.ladra = function(){
alert("wolf, wolf");
setTimeout("this.ladra()", 1000);
}
}
var perro = new perrito();
perro.ladra()
como ven primero defino la clase perrito y despues hago una instancia de esta clase pero el problema es que al hacer la llamada al setTimeout, este no responde y me dice que this.ladra no es una funcion. Para solucionar este problema basta con pasar el nombre del objeto a la funcion setTimeout con lo que quedaria asi:
Código :
....
setTimeout("perro.ladra()",1000);
...
pero oviamente eso no serviria por que solo se podria usar el nombre de instancia perro, eso se soluciona facil. Es cuestion de pasar por parametro el nombre de la instancia del objeto de la clase perrito y guardarlo en una varible para despues reemplazarlo.
Código :
function perrito(objeto){
//objeto es el nombre con que se hace referencia a la clase, en este caso perro
this.objeto2 = objeto;
this.ladra = function(){
alert("wolf, wolf");
setTimeout(this.objeto2+".ladra()", 1000);
}
}
var perro = new perrito("perro");
perro.ladra()
ahora cuando la funcion es interpretada la varible objeto2 en el setTimeout camiba, en este caso por perro, quedando nuevamente setTimeout("perro.ladra()", 100)
Como ven, para que funcione el metodo tengo que pasar por parametro el nombre de instancia, en este caso perro, lo cual no se ve para nada bien.
Hay alguna forma de hacer esto sin pasar el nombre de instancia?
