В Edge вызов typeof для супер-метода возвращает 'функцию', даже если этот метод отсутствует в родительском классе. - PullRequest
1 голос
/ 07 апреля 2020

Я недавно заметил это на Edge (нехромные версии) и подумал, может ли кто-нибудь пролить свет на этот вопрос.

Вот пример для иллюстрации ( JSFiddle ):

class Parent {}

class Child extends Parent {
    b() {}

    test() {
        console.log('super.a -->', super.a);
        console.log('typeof super.a -->', typeof super.a);

        console.log('super.b -->', super.b);
        console.log('typeof super.b -->', typeof super.b);
    }
}

const child = new Child();

child.test();

В других браузерах все четыре записанных значения являются undefined, как и ожидалось. Однако в Edge 18 окончательное значение typeof super.b равно function. Кажется, как будто, хотя он правильно дает super.b как undefined, когда он проверяет typeof super.b, он проверяет b из текущего класса, а не из родительского.

Есть какие-нибудь объяснения относительно того, что здесь происходит?

...