HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title> TestSite3 </title>
<script type="text/javascript">
function MyClass()
{
this.init();
}
MyClass.prototype.init = function(){
window.setTimeout('this.outputText()', 1000);
}
MyClass.prototype.ouputText = function(){
alert('hello world');
}
var meinObjekt = new MyClass();
</script>
</head>
<body>
</body>
</html>
Hi ich versuche aus der init() Methode die outputText() Methode aufzurufen, doch ich erhalte im Firefox die Fehlermeldung "this.outputText is not a function". Dabei wird auf diese Codezeile verwiesen:
Code:
window.setTimeout('this.outputText()', 1000);
Ich vermute das liegt daran, dass sich das this nicht mehr auf das MyClass Objekt bezieht, sondern auf das window Objekt, da es in der Attributliste der setTimeout Methode ist.
Also hab ich folgendes versucht:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title> TestSite3 </title>
<script type="text/javascript">
function MyClass()
{
this.init();
var self = this;
this.getSelf = function(){
return self;
}
}
MyClass.prototype.init = function(){
var mySelf = this.getSelf();
window.setTimeout('mySelf.outputText()', 1000);
}
MyClass.prototype.ouputText = function(){
alert('hello world');
}
var meinObjekt = new MyClass();
</script>
</head>
<body>
</body>
</html>
Doch auch dies funktioniert nicht, hierbei bekomm ich im Firefox die Fehlermeldung "this.getSelf is not a function". Dabei wird Bezug auf diese Codezeile genommen:
Code:
var mySelf = this.getSelf();
Wie macht mans richtig?
Zuletzt bearbeitet: