Використання функцій стрілок ES6 із лексичним thisзв'язуванням чудово.
Однак я зіткнувся з проблемою мить тому, використовуючи її із типовою прив'язкою клацань jQuery:
class Game {
foo() {
self = this;
this._pads.on('click', function() {
if (self.go) { $(this).addClass('active'); }
});
}
}
За допомогою функції стрілки:
class Game {
foo() {
this._pads.on('click', () => {
if (this.go) { $(this).addClass('active'); }
});
}
}
Потім $(this)перетворюється на закриття типу ES5 (self = this).
Чи є спосіб змусити Трасера ігнорувати "$ (це)" для лексичного зв’язування?
.on()дійсно маєthisкорисне для вас значення. Для мене набагато зрозумілішеthisпосилатися на ціль події, ніж передати подію та знайти ціль вручну. Я не дуже багато грав з функціями стрілок, але здається, було б заплутано повертатися назад і назад з анонімними функціями.