O foco da resolução é entender o contexto no qual a função está sendo executada, pois as soluções são diversas.
Pode ser solucionado com arrow function:
class Relogio {
constructor() {
this._segundos = 0;
setInterval( () => {
console.log(++this._segundos);
}, 1000);
}
}
var relogio = new Relogio();
Pode ser solucionado atrelando o contexto com o método bind:
class Relogio {
constructor() {
this._segundos = 0;
setInterval(function () {
console.log(++this._segundos);
}.bind(this), 1000);
}
}
var relogio = new Relogio();
Como disse anteriormente o segredo é entender o que está acontecendo com o contexto de execução.