Pasar la función de un prototipo como parámetro sin perder el contexto 'this'

Estoy definiendo un 'clas 'en JavaScript mediante prototipo.

La primera vez que se ejecuta func (), funciona, pero cuando se llama la segunda vez, a través de setTimeout, falla porque esta vez ha perdido el contexto del objeto, I.E. @est ya no hace referencia al objeto, pero ahora hace referencia aventan.

¿Hay alguna forma de superar esto mientras sigo usando el prototipo? o necesito usar cierres para definir un 'clas '?

function klass(){}

klass.prototype = {
  a: function() {
    console.log( "Hi" );
  },    
  func: function(){
    this.a();
    setTimeout( this.func, 100 );
  }
};

var x = new klass();
x.func();

Respuestas a la pregunta(6)

Su respuesta a la pregunta