Показать сообщение отдельно
  #1 (permalink)  
Старый 07.05.2018, 13:25
Интересующийся
Отправить личное сообщение для victornalchik Посмотреть профиль Найти все сообщения от victornalchik
 
Регистрация: 18.11.2017
Сообщений: 21

Прототипное наследование, переопределение метода родителя
Подскажите пожалуйста, имеются два конструктора, в прототипах которых определены методы calc. Вопрос заключается вот в чем: в прототипном методе calc (ClassB.prototype.calc) для переопределения метода вызывается метод родителя calc (ClassA.prototype.calc.apply(this)), как можно вызвать этот метод не зная имени родителя?

function ClassA(a, b) {
  this.a = a;
  this.b = b;
  this.c = 1;
  return this.a + this.b + this.c;
}

ClassA.prototype.calc = function() {
  return this.a + this.b + this.c;
}

let class1 = new ClassA(2, 2);

function ClassB(d, f) {
  this.d = d;
  this.e = f;
  this.f = 10;
  ClassA.apply(this, arguments);
}

ClassB.prototype = Object.create(ClassA.prototype);
ClassB.prototype.constructor = ClassB;

ClassB.prototype.calc = function() {
  var jas = ClassA.prototype.calc.apply(this);
  return jas + this.d + this.e + this.f;
}

let class2 = new ClassB(20, 20);

console.log(class1.calc());
console.log(class2.calc());
Ответить с цитированием