使用带有词法this绑定的ES6箭头功能非常棒.
但是,我刚刚遇到一个问题,使用它与典型的jQuery点击绑定:
class Game {
foo() {
self = this;
this._pads.on('click', function() {
if (self.go) { $(this).addClass('active'); }
});
}
}
Run Code Online (Sandbox Code Playgroud)
改为使用箭头功能:
class Game {
foo() {
this._pads.on('click', () => {
if (this.go) { $(this).addClass('active'); }
});
}
}
Run Code Online (Sandbox Code Playgroud)
然后$(this)转换为ES5(self = this)类型闭包.
是一种让Traceur忽略"$(this)"进行词法绑定的方法吗?
我在几个地方读过,关键的区别是" this在箭头函数中是词法绑定的".这一切都很好,但我实际上并不知道这意味着什么.
我知道这意味着它在定义函数体的大括号范围内是独一无二的,但我实际上无法告诉你以下代码的输出,因为我不知道所指的this是什么,除非它指的是胖箭头函数本身....这似乎没用.
var testFunction = () => { console.log(this) };
testFunction();
Run Code Online (Sandbox Code Playgroud) 我在互联网上找到了关于名称,箭头功能和胖箭头功能的信息,但没有关于它们之间有什么不同的信息.
有什么不同吗?