problem z zakresem setTimeout
Mam setTimeout zdefiniowany wewnątrz funkcji, która kontroluje odrodzenie gracza (tworzę grę):
var player = {
...
death:(function() {
this.alive = false;
Console.log("death!");
var timer3 = setTimeout((function() {
this.alive = true;
Console.log("alive!");
}),3000);
}),
...
}
Kiedy się wykonuje, czytam w konsoli: „śmierć!” i 3 sekundy później „żywy!”. Jednak,alive
nigdy tak naprawdę nie wraca do prawdziwości, bo jeśli piszęplayer.alive
w konsoli wracafalse
. Dlaczego mogę zobaczyć „żywy!” ale zmienna nigdy nie jest ustawiana z powrotem na true?