标题说明了一切。当我在 CoffeeScript 中使用胖箭头时,它会this
在调用函数之前先存储。例如:
class myClass
constructor: ->
element = $ "#id"
element.click ->
@myMethod(@value)
return
return
myMethod: (c)->
window.console.log(c)
return
会产生
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;
})();
现在在 JavaScript 的第 8 行,this.myMethod
是错误的。在这个范围内,this
指的是element
而不是类MyClass
。
但是,如果在 CoffeeScript 的第 4 行,我用 JavaScript 中的第 8 行替换element.click ->
将element.click =>
成为_this.myMethod(_this.val)
在调用函数之前this
存储引用 myClass的位置。_this
但是_this.value
是未定义的,即使它已定义,我在这里尝试访问的对象也是(由该函数范围内element
的实际关键字引用)。this
现在如何访问实际this
?