Как создать класс изнутри класса в Javascript - PullRequest
0 голосов
/ 01 апреля 2020

Как мы можем создать класс из функции внутри класса?

class One {
  CreateClass() {
    return class Two {
      init() {
          console.log(1234567)
      }
    }
  }
}

Мы собираемся создать класс из уже созданного экземпляра класса, например:

var one = new Class();
var two = new one.CreateClass();
two.init();

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Ваш One1.createClass() не является функцией конструктора, это возвращаемое значение. Так что вам нужно вызвать его, а затем вызвать новое возвращаемое значение

class One {
  CreateClass() {
    return class Two {
      init() {
        console.log(1234567)
      }
    }
  }
}


var One1 = new One();
var two = new (One1.CreateClass())()
two.init();

Я не совсем уверен, как вы хотите, но вы можете сделать что-то вроде этого

function One() {
  this.CreateClass = class Two {
    init() {
      console.log(1234567)
    }
  }
}


var One1 = new One();
var two = new One1.CreateClass()
two.init();
1 голос
/ 01 апреля 2020

Вы можете добавить ключевое слово new после оператора return, чтобы он вызывал класс Two при каждом вызове метода CreateClass и возвращал новый экземпляр класса Two.

class One {
  CreateClass() {
    return new class Two {
      init() {
        console.log(1234567)
      }
    }
  }
}

var one = new One();
var two = one.CreateClass();
two.init();
...