Как получить доступ к переопределённому методу родителя родителя (дедушке)? Имеются следующие классы: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()?
Для получения доступа к 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().
Для получения доступа к 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().