Как получить доступ к переопределённому методу родителя родителя (дедушке)? Имеются следующие классы:class A {
foo() { alert("A"); }
}
class B extends A {
foo() { alert("B"); }
}
class C extends B {
foo() { alert("C"); }
bar() { /* Здесь я хочу вызвать A::foo() */ }
}
Если в методе bar() я напишу this.foo(), то получу доступ к C::foo().
Если super.foo(), то получу доступ к B::foo().
А как всё-таки получить доступ к A::foo() из C::bar()?

21 Авг 2019 в 06:58
160 +1
0
Ответы
1

Для получения доступа к A::foo() из метода bar() класса C, можно использовать следующий синтаксис:

class A {
foo() { alert("A"); }
}
class B extends A {
foo() { alert("B"); }
}
class C extends B {
foo() { alert("C"); }
bar() {
A.prototype.foo.call(this); // Вызываем A::foo() с помощью прототипа
}
}
let c = new C();
c.bar(); // Выведет "A"

Используя A.prototype.foo.call(this), мы вызываем метод foo из класса A, указывая контекст выполнения через this. Таким образом, в методе bar() класса C мы можем получить доступ к переопределенному методу родителя родителя (дедушке) A::foo().

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир