在ES5代码中,必须创建辅助变量_this,以便可以访问UiComponent的this。
为什么在ES6中,这个关键字引用UiComponent函数,而不是作为DOM对象的按钮?
// ES5
function UiComponent() {
var _this = this; // (A)
var button = document.getElementById('myButton');
button.addEventListener('click', function () {
console.log('CLICK');
_this.handleClick(); // (B)
});
}
UiComponent.prototype.handleClick = function () {
···
};
// ES6
function UiComponent() {
var button = document.getElementById('myButton');
button.addEventListener('click', () => {
console.log('CLICK');
this.handleClick(); // (A)
});
}