NodeJS: Может ли статический метод вызвать конструктор того же класса? - PullRequest
0 голосов
/ 21 мая 2019

У меня вопрос: если у меня есть конструктор в классе:

module.exports = class ClassA{
  constructor(stuffA, stuffB) {
    this.stuffA = stuffA;
    this.stuffB = stuffB;
  }

  NonStaticMethod() {
    console.log(this);
  }

  static StaticMethod(stuffA, stuffB) { 
      const element = new ClassA(stuffA, stuffB);
      console.log(element)
      element.NonStaticMethod();
    });
  }
};

Итак, NonStaticMethod печатает другую информацию для объекта, чем StaticMethod.Итак, два вопроса:

  1. Можно ли вызвать конструктор из статического метода из того же класса?

  2. Каким должен быть правильный способ вызова нестатического метода из статического метода?

1 Ответ

0 голосов
/ 21 мая 2019

Следующий код выводит «true», поэтому в NonStaticMethod this.stuffA правильно полагается на значение, определенное в конструкторе:

class ClassA{
    constructor(stuffA, stuffB) {
        this.stuffA = stuffA;
        this.stuffB = stuffB;
    }

    NonStaticMethod() {
        console.log(this.stuffA === "a");
    }

    static StaticMethod(stuffA, stuffB) {
        const element = new ClassA(stuffA, stuffB);
        element.NonStaticMethod();
    };
}

ClassA.StaticMethod("a","b")
...