JavaScript setInterval no está correctamente vinculado al cierre correcto

Problema

Hola gente, soy bastante nuevo en JavaScript y provengo del mundo muy orientado a objetos de Python y Java, ese es mi descargo de responsabilidad.

Hay dos fragmentos de código a continuación, implementaciones alternativas, una en JavaScript, una en Coffeescript. Estoy intentando ejecutarlos en el servidor en una aplicación Meteor.js. El problema que estoy experimentando es cuando llamo a la función "setInterval" usando el método enlazado "this.printSomething" como mi devolución de llamada, una vez que se ejecuta la devolución de llamada, pierde el alcance y la instancia resulta en que "this.bar" no está definido. ¿Puede alguien explicarme por qué el código JavaScript o el código de coffescript no funciona?

Implementación de JavaScript
function Foo(bar) {
  this.bar = bar;

  this.start = function () {
    setInterval(this.printSomething, 3000);
  }

  this.printSomething = function() {
    console.log(this.bar);
  }
}

f = new Foo(5);
f.start();
Implementación de Coffeescript
class foo
    constructor: (bar) ->
        @bar = bar

    start: () ->
        Meteor.setInterval(@printSomething, 3000)

    printSomething: () ->
        console.log @bar

x = new foo 0
x.start()

Respuestas a la pregunta(3)

Su respuesta a la pregunta