https://jsfiddle.net/k3wrstLyclass A {
foo() {
this.bar()
}
bar() {
console.log('bar')
}
}
class B extends A {
bar() {
super.foo()
console.log('bar 2')
}
}
let b = new B
b.bar() // Uncaught RangeError: Maximum call stack size exceeded
Я ожидаю, что в методе bar() класса B при вызове super.foo() будет вызван метод foo() класса A, в котором будет вызван метод bar()
класса А, но вызывается метод bar()
класса B и мы получаем ошибку Uncaught RangeError: Maximum call stack size exceeded
Логично ли такое поведение с точки зрения ООП, в c++ и java происходит так же?
UPD:
Спасибо комментаторам, разобрался.
Чтобы получилось так как я хочу, нужно заменить вызов
super.foo()
на
A.prototype.foo()