function foo()
{
}
setInterval( "foo()", 1000 );
Wenn Sie OO-Technologie verwenden, können Sie dies tun,
// Konstruktor
function MyObj
{
function foo()
{
alert( this.data );
this.timer = foo;
this.data = "Hallo";
setInterval( "this.timer()" , 1000 );
}
function Another()
{
/ timer erstellen, wenn Objekt erstellt wird
var obj = new MyObj(
}
Allerdings funktioniert es nicht so, wie Sie denken. Der Grund dafür ist, dass die Funktion setInterval() die Variable this nicht erkennt. Ein Workaround-Ansatz könnte wie folgt aussehen.
function Another()
{
var obj = nw MyObj();
setInterval( "obj.timer()", 1000 );
}
Natürlich kann es korrekt funktionieren, aber wenn Sie es sind ein Perfektionist Sonst wirst du damit nicht zufrieden sein. Glücklicherweise können Sie diese Aktion mit einer geringfügigen Änderung der Form in den Konstruktor einfügen.
// Konstruktor
Funktion MyObj
{
function foo()
{
alert( this.data );
this.timer = foo;
this.data = "Hallo" ;
var self = this;
setInterval( function() { self.timer(); }, 1000 }
function Another()
{
var obj = new MyObj();
}
OK, mit einem Abschluss, das war's. Was die Gründe angeht, möchte ich es den Lesern überlassen, selbst darüber nachzudenken.
Geben Sie abschließend ein Beispiel für verschiedene Testfälle.
Klassen.
*
* 1. Timer kann laufen und Ergebnis ist ok
* 2. Timer kann laufen und Ergebnis ist falsch
* 3. Timer kann nicht laufen
*
* /
function Obj()
{
function foo()
{
alert( this.timer );
this.timer = foo;
//
var me = this;
var f = function() { me.timer( }; ); ;
// 1. Klasse
//setInterval( f, 1000 ); 2. Klasse
//setInterval( me.timer, 1000);
//setInterval( foo, 1000); 🎜>/ /setInterval( "this.timer()", 1000 );
//setInterval( "me.timer()", 1000 ); ;
}
var o = null;
function OnClick()
{
o = new Obj(
// 1. Klasse
//setInterval ( "o.timer()", 1000 );
setInterval( function() { o.timer(); }, 1000 ); .timer, 1000 );
}
OnClick() " value = "Klick mich">