Обратите внимание, что нет причин делать обработчик событий

я есть два класса, и класс B расширяет класс A. В классе B я выполняю некоторую операцию canvas и, следовательно, должен вызвать обратный вызов для загрузки изображения. В обратном вызове я хочу вызвать тот же метод родительского класса. Однако, если я помещаю эту строку кода в обратный вызов, я получаю синтаксическую ошибку «Uncaught SyntaxError: здесь неожиданно ключевое слово super». Любая идея, как я могу сделать контекст доступным в обратном вызове, чтобы я мог вызвать метод родительского класса?

Ура Том

class A{
    super(){
    }

    myMethod(){
        console.log("mymethod of A");
    }
}



class B extends A{
    constructor(){
        super();
    }


    myMethod(){

    var canvas = window.document.getElementById("myCanvas");
        var context = canvas.getContext('2d');

        context.canvas.width = 200;
        context.canvas.height = 100;
        context.fillStyle = "#ffff00";
        context.font = "15px Arial";

        context.fillText("Hello World!", 0, context.canvas.height);
        var image = document.createElement("img");
        image.src = canvas.toDataURL("image/png");
        this.img = image;

        image.onload = async function(){
            super.myMethod();// having thise line in the code results in "Uncaught SyntaxError: 'super' keyword unexpected here"
            console.log("callback");
        }
    }
}
 Keith04 окт. 2017 г., 23:02
Вы можете попробовать ->image.onload = async () => { super.myMethod(); }

Ответы на вопрос(1)

Решение Вопроса

Вы хотите использоватьфункция стрелки здесь, который сохраняетthis а такжеsuper метода, в котором это определено:

myMethod(){
    …
    image.onload = () => {
        super.myMethod();
    };
}

Обратите внимание, что нет причин делать обработчик событийasync.

Ваш ответ на вопрос