setTimeout en los metodos de tu clase

Author: Adrià Cidre  |  Category: Java Script

SetTimeOut es una función interesante que nos permite hacer una llamada a una función transcurrido un número concreto de segundos. Para utilizar SetTimeOut solo tenemos que escribir una sentencia como esta:

function talk(str){
	alert(str);
}
setTimeout("talk('Hello')", 5000);

Los parámetros de la misma son dos, en primer lugar la función que se debe llamar, y en segundo el número de segundos que debe tardar en llamarla, en este caso llamara la función talk() en cinco segundos.

El problema que hoy queremos presentar, se presenta cuando intentamos utilizar setTimeOut desde dentro de un ‘objeto’ para llamar a uno de los métodos del mismo. De manera que tendríamos un código como este


setTimeout(this.talk('Hello'), 5000);

Esto no funcionará, ya que en javascript no existen clases como tales. Después de buscar y rebuscar por internet encontré este artículo, que me ofrecía la siguiente solución.


	setTimeout(function(thisObj) { thisObj.talk('hola'); }, 5000, this);

Estamos pasando como parámetro opcional de SetTimeOut nuestro objeto para poder interactuar con el dentro de la propia función.

Sinembargo mirando los comentarios nos damos cuenta que esta solución no es valida para Internet Explorer, y nos proponen la siguiente solución:


thisObj = this;
setTimeout(function() { thisObj.talk('Hola'); }, 50);

Espero que os sirva para hacer vuestros pinitos en Javascript.

Tags: , , ,

Leave a Reply