Вызов родительского конструктора в javascript - PullRequest
0 голосов
/ 11 марта 2020

Интересно, может ли кто-нибудь помочь?

Я пытаюсь вызвать конструктор родителя или как минимум получить ссылку на родительский класс каким-либо образом без какого-либо жесткого кодирования.

class A {
  static foo(options) {
    parent::__construct(options); <- this is how you would get the parent in php
  }
}

class B extends A {

}


Возможно ли это?

Ответы [ 2 ]

1 голос
/ 11 марта 2020

В классе javascript (и OOP в целом) метод stati c не является частью экземпляра , и поэтому объект, в котором он находится, не имеет конструктора.

Вы должны избегать использования метода stati c для такого рода вещей и использовать стандартный конструктор и вызывать super() для вызова родительского конструктора.

class A {
  constructor(options) {
    console.log('Options are:');
    console.log(options);
  }
}

class B extends A {
    constructor(options) {
       super(options);
    }
}

const item = new B({item1: 'abc'});

Дополнительная ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super

0 голосов
/ 11 марта 2020

Вы можете использовать super() для вызова родительского конструктора

class A {
  constructor() {
    console.log('I\'m parent ');
  }
  
  foo(){
     console.log('Class A: Called foo');
  }
  
}


class B extends A {
  constructor() {
    super();
  }
  
  foo(){
     super.foo()
  }
}


const b = new B();
b.foo();
...