Defina o contexto de retorno de chamada para setTimeout () e setInterval ()

Por padrão, o context ( this) para callbacks de window.setTimeout () é definido como o objeto global ( windowem navegadores).

Ao trabalhar com classes, às vezes você precisa manter o contexto para ser o da instância da classe. Você pode conseguir isso usando o bind()método para definir explicitamente o contexto.

function UselessDelay()
{
this.message='Why was I delayed?';
}

UselessDelay.prototype.start=function()
{
window
.setTimeout(this.show.bind(this),1000);
}

UselessDelay.prototype.show=function()
{
console
.log(this.message);
};

Uso

var ud=new UselessDelay();
ud
.start();//Will show 'Why was I delayed?' after 1 second