Por padrão, o context ( this
) para callbacks de window.setTimeout () é definido como o objeto global ( window
em 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