alex4answ
@alex4answ

Как создать объект внутри этого же класса, new this()?

С других языков у меня осталась привычка, что можно сделать вот так:

class A  {
  constructor() {
    this.test = Math.random();
  }
  instance() {
    return new this();
  }
}
class B extends A {}

const b = new B(); // b.test = 0.3213123213154353
const c = b.instance(); // c.test = 0.43234871231123

Но в js это не работает, я знаю что можно создать, если указать имя класса - return new A();, но мне нужно полиморфное поведение.

Как это реализовать?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
0xD34F
@0xD34F
return new this.constructor();

??

UPD. Оказывается, у нас тут typescript, и он недоволен:

This expression is not constructable.
  Type 'Function' has no construct signatures

Тогда пусть будет так:

const { constructor } = Object.getPrototypeOf(this);
return new constructor();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы