A cópia do código é a seguinte:
função foo ()
{
}
setInterval ("foo ()", 1000);
Se você usar a tecnologia OO, pode fazer isso.
A cópia do código é a seguinte:
// construtor
função myobj
{
função foo ()
{
alerta (this.data);
}
this.timer = foo;
this.data = "hello";
setInterval ("this.timer ()", 1000);
}
função outro ()
{
// Crie timer quando crie objeto
var obj = new Myobj ();
}
No entanto, não funciona como você pensa. O motivo é que a função setInterval () não reconhece essa variável. Um método de solução alternativa pode fazer isso.
A cópia do código é a seguinte:
função outro ()
{
var obj = nw myobj ();
setInterval ("obj.timer ()", 1000);
}
Obviamente, funciona corretamente, mas se você é um perfeccionista, não ficará feliz com isso. Felizmente, essa ação pode ser colocada no construtor, com uma pequena mudança na forma.
A cópia do código é a seguinte:
// construtor
função myobj
{
função foo ()
{
alerta (this.data);
}
this.timer = foo;
this.data = "hello";
var self = this;
setInterval (function () {self.timer ();}, 1000);
}
função outro ()
{
var obj = new Myobj ();
}
OK, usando um fechamento, tudo bem. Quanto às razões, quero pensar nos leitores.
Por fim, dê um exemplo de vários casos de teste.
A cópia do código é a seguinte:
<html>
<head>
<título>
Olá timer
</title>
<Script Language = "JScript">
/*
* Existem 3 classes.
*
* 1. O timer pode funcionar e o resultado está ok
* 2. O timer pode funcionar e o resultado está errado
* 3. Timer não pode ser executado
*
*/
função obj ()
{
função foo ()
{
alerta (this.timer);
}
this.timer = foo;
//
var Me = this;
var f = function () {me.timer (); };
var f2 = function () {this.timer (); };
// 1ª classe
// setInterval (f, 1000);
// 3ª classe
// setInterval (f2, 1000);
// 2ª classe
// setInterval (me.timer, 1000);
// setInterval (this.timer, 1000);
// setInterval (foo, 1000);
// 3ª classe
// setInterval ("this.timer ()", 1000);
// setInterval ("me.timer ()", 1000);
// setInterval ("Foo ()", 1000);
}
var o = nulo;
função onclick ()
{
o = novo obj ();
// 1ª classe
// setInterval ("o.timer ()", 1000);
setInterval (function () {o.timer ();}, 1000);
// 2ª classe
// setInterval (O.timer, 1000);
}
</script>
</head>
<Body>
<input type = "button" onclick = "onclick ()" value = "clique em mim"> </input>
</body>
</html>