Событие принудительно ставит "контекстом" коллбэка сам элемент вызвавший событие.
Есть множество вариантов борьбы с этим, но ИМХО, только два достойны использования:
Задавать коллбэк через стрелочную функцию:
this.img.onload = event => {
console.log("Downloaded");
console.log(this.el.src);
};
т.к. стрелочная функция железно цепляет вышестоящий "контекст".
Вешать обработчиком события не коллбэк, а сам объект, имеющий служебный метод handleEvent:
this.img.addEventListener('load', this);
class Materialbox extends Component {
//...
handleEvent(event){
switch(event.type){
case 'load':
this.imageLoad(event);
break;
//...
}
},
imageLoad(event){
console.log("Downloaded");
console.log(this.el.src);
}
//...
}
что отлично сочетается с ООП.