perador existencial @CoffeeScript y este

Noté algo extraño con el compilador CoffeeScript y me preguntaba si este era un comportamiento correcto o no. Si es correcto, tengo curiosidad por qué hay una diferencia ..

Dado el siguiente CoffeeScript:

if @myVar?
  alert myVar

Esperaba que se compilara a JavaScript así:

if (typeof this.myVar !== "undefined" && this.myVar !== null) {
  alert(myVar);
}

Pero en cambio, lo que genera el compilador CoffeeScript es esto:

if (this.myVar != null) {
  alert(myVar);
}

Si no hago referencia a esto (ni a ningún otro objeto principal), el CoffeeScript se compila como es de esperar.

¿Es este el comportamiento correcto? Si es así, ¿por qué funciona diferente cuando se usa esto?

Editar

Para agregar un poco más de aclaración. Esto no sucede solo con esto, sino con otras propiedades de los objetos. Por ejemplo, si reemplazara el CoffeeScript anterior con lo que está debajo, aún se compilaría con solo "! = Null" ...

if myVar.myProp?
  alert myVar

Respuestas a la pregunta(2)

Su respuesta a la pregunta