Hallo af2111,
das ist nicht gut. Du möchtest das Alter des Studenten ändern. Aber dein Timer ändert nur noch eine lokale Variable.
Korrekt ist, das this-Problem zu lösen. Wie schon erklärt, wird this bei einem Funktionsaufruf an den Aufrufkontext gebunden. Bei einem Methodenaufruf ist das das Objekt, bei einem Funktionsaufruf aus settimeout ist das - im strict mode - null. Um das zu umgehen, hast Du zwei Möglichkeiten.
(1) Prä-ECMAScript 2015: Du erstellst eine Variable, der Du this zuweist. So eine Variable nennt man gerne self oder that. Im settimeout callback verwendest Du dann self bzw. that.
(2) ECMAScript 2015 Lösung: Du verwendest eine Arrow-Funktion. Arrow-Funktionen unterscheiden sich von normalen Funktionen dadurch, dass sie this nicht binden, d.h. innerhalb der Arrow-Funktion hast Du das gleiche this zur Verfügung wie außerhalb. Arrow-Funktionen wurden genau wie let mit ECMAScript 2015 eingeführt. Du nutzt let, also kannst Du auch Arrow-Funktionen nutzen. Der Unterschied in der Syntax ist minimal:
altern: function () {
        let erstsemesterAlter = this.alter;
        setInterval(() => {
            this.alter = this.alter + 1;
            if (this.alter - erstsemesterAlter == 8) {
                alert("Doktor in " + this.Fach + "!!!");
            }
        }, 1000);
    }
Rolf
sumpsi - posui - clusi
 nicht angemeldet
 nicht angemeldet Rolf B
 Rolf B MudGuard
 MudGuard