Die Codekopie lautet wie folgt:
Funktion foo ()
{
}
setInterval ("foo ()", 1000);
Wenn Sie die OO -Technologie verwenden, können Sie dies tun.
Die Codekopie lautet wie folgt:
// Konstruktor
Funktion myobj
{
Funktion foo ()
{
alarm (this.data);
}
this.timer = foo;
this.data = "Hallo";
setInterval ("this.timer ()", 1000);
}
Funktion ein anderer ()
{
// Timer erstellen, wenn das Objekt erstellen
var obj = new myobj ();
}
Es funktioniert jedoch nicht, wie Sie denken. Der Grund dafür ist, dass die Funktion setInterval () diese Variable nicht erkennt. Eine Problemumgehungsmethode kann dies tun.
Die Codekopie lautet wie folgt:
Funktion ein anderer ()
{
var obj = nw myobj ();
setInterval ("obj.timer ()", 1000);
}
Natürlich funktioniert es richtig, aber wenn Sie ein Perfektionist sind, werden Sie damit nicht zufrieden sein. Glücklicherweise kann diese Aktion in den Konstruktor mit ein wenig Veränderung in Form gebracht werden.
Die Codekopie lautet wie folgt:
// Konstruktor
Funktion myobj
{
Funktion foo ()
{
alarm (this.data);
}
this.timer = foo;
this.data = "Hallo";
var self = this;
setInterval (function () {self.timer ();}, 1000);
}
Funktion ein anderer ()
{
var obj = new myobj ();
}
OK, durch die Verwendung einer Schließung ist es in Ordnung. Wie aus den Gründen möchte ich den Lesern einen Gedanken für sich selbst machen.
Geben Sie schließlich ein Beispiel für verschiedene Testfälle an.
Die Codekopie lautet wie folgt:
<html>
<kopf>
<title>
Hallo Timer
</title>
<script Language = "Jscript">
/*
* Es gibt 3 Klassen.
*
* 1. Timer kann laufen und das Ergebnis ist in Ordnung
* 2. Timer kann laufen und das Ergebnis ist falsch
* 3. Timer kann nicht laufen
*
*/
Funktion obj ()
{
Funktion foo ()
{
alarm (this.timer);
}
this.timer = foo;
//
var me = this;
var f = function () {me.timer (); };
var f2 = function () {this.timer (); };
// 1. Klasse
// setInterval (f, 1000);
// 3. Klasse
// setInterval (f2, 1000);
// 2. Klasse
// setInterval (me.timer, 1000);
// setInterval (this.timer, 1000);
// setInterval (foo, 1000);
// 3. Klasse
// setInterval ("this.timer ()", 1000);
// setInterval ("me.timer ()", 1000);
// setInterval ("foo ()", 1000);
}
var o = null;
Funktion onclick ()
{
o = neuer obj ();
// 1. Klasse
// setInterval ("o.timer ()", 1000);
setInterval (function () {o.timer ();}, 1000);
// 2. Klasse
// setInterval (o.timer, 1000);
}
</script>
</head>
<body>
<input type = "button" "onclick =" onclick () "value =" klicken Sie mir "> </input>
</body>
</html>