Задать вопрос

Что происходит в этом коде на js?

Добрый вечер!
Не пойму, для чего нужен __super__ в этом коде:
AboutController.prototype.action = function() {
    console.log('About Controller');
    return AboutController.__super__.action.call(this);
  };

Компилится из coffee -> super()
  • Вопрос задан
  • 183 просмотра
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
DIITHiTech
@DIITHiTech
Fullstack javascript developer
Видно вызов перекрытого метода при прототипом наследовании.

AboutController унаследовался от другого объекта, в нем action перекрыл метод прототипа, вот потому код вызывают в перекрытом методе дабы унаследовать функционал старого.

В языках с классическим ООП для этого есть механизмы типа ключевого слова inherited. В JS же просто отдаленно эмитируется его функционал.

В AboutController.__super__ лежит ссылка на прототип объекта, от которого унаследовался этот AboutController. Это свойство устанавливается на уровне фреймворка, для возможности вызова "родительских" методов, если одноименные методы "ребенка" перекрывают методы родителя т.е имееют одинаковые имя.

У родителя есть уже метод [action] вы его перезаписали чтоб добавить свой код, но чтоб унаследовать функционал родительского метода выполняется его код через такой костыль.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы