Como me refiro ao real 'this' dentro do retorno de chamada de seta de gordura do CoffeeScript?
O título diz tudo. Quando uso a seta de gordura no CoffeeScript, ele armazenathis
primeiro antes de chamar a função. Por exemplo:
class myClass
constructor: ->
element = $ "#id"
element.click ->
@myMethod(@value)
return
return
myMethod: (c)->
window.console.log(c)
return
renderia
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;
})();
Agora na linha 8 do JavaScript,this.myMethod
está errado. Nesse escopo,this
refere-se aelement
em vez da classeMyClass
.
No entanto, se na linha 4 do CoffeeScript, substituoelement.click ->
porelement.click =>
a linha 8 em JavaScript se tornará_this.myMethod(_this.val)
Ondethis
referente ao myClass é armazenado em_this
antes de chamar a função. Mas_this.value
é indefinido e, mesmo que tenha sido definido, o objeto que estou tentando acessar aqui éelement
(que é referido pelo realthis
palavra-chave no escopo desta função).
Como acessaria o realthis
agora?