Type Error: not a function

member42

Aktives Mitglied
Hallo,

warum bekomme ich bei folgendem Programm die Fehlermeldung: TypeError: this.func is not a function ?
Javascript:
function Test() {
   
   this.init = function() {
       var interval = setInterval(this.update, 100);
   }
   
   this.func = function() {
       console.log("Test");
   }
   
   this.update = function() { 
       this.func();
   }

}

var t = new Test();
t.init();

Danke im Vorraus.
 

httpdigest

Top Contributor
Weil `this` innerhalb der update Funktion, wenn es von dem setInterval() Timer aufgerufen wird, nicht dein Test Objekt ist, sondern ein internes Timeout-Objekt. Wenn du das nicht brauchst, und stattdessen wirklich das `this` als dein Test-Objekt haben willst, dann schreibe setInterval so:
Javascript:
var interval = setInterval(this.update.bind(this), 100);

// oder, wenn du ES2015 verwendest, dann geht auch:
var interval = setInterval(() => this.update(), 100);
 

Neue Themen


Oben