@Evtera

Почему не получается расширить класс JS?

Здравствуйте. Есть следующий класс.

class Select {
  constructor(el) {
    if (typeof el === "string") {
      el = document.querySelectorAll(el);
    }

    if (typeof el[Symbol.iterator] === "function") {
      return [...el].map((n) => new Select(n));
    }

    this.$select = el;
 }
}

const select = new Select(".select");


Я хочу использовать методы класса а так же this.$el в другом классе, чтобы расширить всю эту функцию.
Пишу следующее, но не выходит

class Checkboxes extends Select {
  constructor(props) {
    super(props);
  }

  voice() {
    console.log("Asd");
  }
}

const checkboxes = new Checkboxes(".selectCheckboxes__line");


Что я делаю не так?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
return [...el].map((n) => new Select(n));

Здесь всегда возвращается массив экземпляров базового класса.
А надо текущего - замените Select на this.constructor.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽