标题说明了一切。当我在 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?