La copie de code est la suivante:
fonction foo ()
{
}
setInterval ("foo ()", 1000);
Si vous utilisez la technologie OO, vous pouvez le faire.
La copie de code est la suivante:
// constructeur
fonction myobj
{
fonction foo ()
{
alerte (this.data);
}
this.timer = foo;
this.data = "Bonjour";
setInterval ("this.timer ()", 1000);
}
fonctionner un autre ()
{
// Créer une minuterie lorsque vous créez un objet
var obj = new myoBj ();
}
Cependant, cela ne fonctionne pas comme vous le pensez. La raison en est que la fonction setInterval () ne reconnaît pas cette variable. Une méthode de solution de contournement peut le faire.
La copie de code est la suivante:
fonctionner un autre ()
{
var obj = nw myoBj ();
setInterval ("obj.timer ()", 1000);
}
De toute évidence, cela fonctionne correctement, mais si vous êtes perfectionniste, vous n'en sois pas satisfait. Heureusement, cette action peut être mise dans le constructeur, avec un peu de changement de forme.
La copie de code est la suivante:
// constructeur
fonction myobj
{
fonction foo ()
{
alerte (this.data);
}
this.timer = foo;
this.data = "Bonjour";
var self = this;
setInterval (function () {self.timer ();}, 1000);
}
fonctionner un autre ()
{
var obj = new myoBj ();
}
OK, en utilisant une fermeture, c'est OK. Quant aux raisons, je veux réfléchir aux lecteurs.
Enfin, donnez un exemple de divers cas de test.
La copie de code est la suivante:
<html>
<adal>
<Title>
Hello Timer
</TITAL>
<script linguisse = "jscript">
/ *
* Il y a 3 classes.
*
* 1. La minuterie peut fonctionner et le résultat est ok
* 2. La minuterie peut fonctionner et le résultat est faux
* 3. La minuterie ne peut pas fonctionner
*
* /
fonction obj ()
{
fonction foo ()
{
alerte (this.timer);
}
this.timer = foo;
//
var me = ceci;
var f = function () {me.timer (); };
var f2 = function () {this.timer (); };
// 1ère classe
// setInterval (F, 1000);
// 3e classe
// setInterval (F2, 1000);
// 2e classe
// setInterval (me.timer, 1000);
// setInterval (this.timer, 1000);
// setInterval (foo, 1000);
// 3e classe
// setInterval ("this.timer ()", 1000);
// setInterval ("me.timer ()", 1000);
// setInterval ("foo ()", 1000);
}
var o = null;
fonction onClick ()
{
O = nouveau obj ();
// 1ère classe
// setInterval ("o.timer ()", 1000);
setInterval (function () {o.timer ();}, 1000);
// 2e classe
// setInterval (o.timer, 1000);
}
</cript>
</ head>
<body>
<entrée type = "bouton" onclick = "onclick ()" value = "cliquez moi"> </ entrée>
</docy>
</html>