Використання функцій стрілок 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
посилатися на ціль події, ніж передати подію та знайти ціль вручну. Я не дуже багато грав з функціями стрілок, але здається, було б заплутано повертатися назад і назад з анонімними функціями.