Wie beziehe ich mich auf das tatsächliche "this" in CoffeeScript fat-arrow callback?
Der Titel sagt schon alles. Wenn ich in CoffeeScript den Fettpfeil verwende, wird dieser gespeichertthis
zuerst, bevor die Funktion aufgerufen wird. Zum Beispiel:
class myClass
constructor: ->
element = $ "#id"
element.click ->
@myMethod(@value)
return
return
myMethod: (c)->
window.console.log(c)
return
ergäbe
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;
})();
Jetzt in Zeile 8 von JavaScript,this.myMethod
ist falsch. In diesem Bereichthis
bezieht sich aufelement
anstelle der KlasseMyClass
.
Wenn ich jedoch in Zeile 4 von CoffeeScript bin, ersetze ichelement.click ->
durchelement.click =>
Die Zeile # 8 in JavaScript wird zu_this.myMethod(_this.val)
wothis
auf myClass verweisend ist in gespeichert_this
vor dem Aufruf der Funktion. Aber_this.value
ist undefiniert und selbst wenn es definiert wäre, ist das Objekt, auf das ich hier zugreifen möchte,element
(die von der tatsächlichen bezeichnet wirdthis
Schlüsselwort im Umfang dieser Funktion).
Wie würde der Zugriff auf die aktuellethis
jetzt?