¿Cómo me refiero al real 'this' dentro de la devolución de llamada de CoffeeScript fat-arrow?
El título lo dice todo. Cuando uso la flecha de grasa en CoffeeScript, almacenathis
Primero antes de llamar a la función. Por ejemplo:
class myClass
constructor: ->
element = $ "#id"
element.click ->
@myMethod(@value)
return
return
myMethod: (c)->
window.console.log(c)
return
cedería
var myClass;
myClass = (function() {
function myClass() {
var element;
element = $("#id");
element.click(function() {
this.myMethod(this.value);
});
return;
}
myClass.prototype.myMethod = function(c) {
window.console.log(c);
};
return myClass;
})();
Ahora en la línea # 8 de JavaScript,this.myMethod
Está Mal. En este ámbito,this
se refiere aelement
en lugar de la claseMyClass
.
Sin embargo, si en la línea # 4 de CoffeeScript, sustituyoelement.click ->
porelement.click =>
La línea # 8 en JavaScript se convertirá_this.myMethod(_this.val)
dóndethis
refiriéndose a myClass se almacena en_this
Antes de llamar a la función. Pero_this.value
no está definido e incluso si estuviera definido, el objeto al que estoy tratando de acceder aquí eselement
(que es referido por el actualthis
palabra clave en el alcance de esta función).
¿Cómo accedería a lo real?this
¿ahora?