Вызов родительского конструктора переопределяет функции до завершения всех дочерних конструкторов

ECMAScript 6 (Гармония) вводитclasses со способностью наследовать одно от другого. Предположим, у меня есть игра и некоторый базовый класс, чтобы описать основные вещи для поведения бота. Я упрощаю свою настоящую архитектуру, но предположим, что мне нужно запуститьrender и некоторые другие рутины, и я ставлю эти вызовы в основномBot учебный класс.

class Bot{
  constructor(){
    render();
  }
  render(){}
}

Каждый бот затем отменяет этоrender Функция и может иметь некоторые настройки в конструкторе:

class DevilBot extends Bot{
  constructor(){
    super();
    this.color = 0xB4D333;
  }
  render(){
    createSomeMesh(this.color);
  }
}

Проблема в том, что прежде чем я позвонюsuper() - this не существует. Ноsuper (родительский конструктор) вызовет переопределенныйrender что понадобитсяcolor переменная, определенная в дочернем конструкторе. Я могу предположить в родительском конструкторе, что дочерний объект будет реализовывать некоторыеinit Функция со всеми необходимыми настройками и вызвать его:

class Bot{
  constructor(){
    if (this.init) this.init();
    render();
  }
  render(){}
}

class DevilBot extends Bot{
  init(){
    this.color = 0xB4D333;
  }
  render(){
    createSomeMesh(this.color);
  }
}

Но насколько хорош этот подход и каков предпочтительный способ решения такой проблемы?

Ответы на вопрос(1)

Ваш ответ на вопрос