Я недавно заметил это на 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
из текущего класса, а не из родительского.
Есть какие-нибудь объяснения относительно того, что здесь происходит?