Jammer
Jammer

Reputation: 1563

Calling parent constructor in javascript

Wonder if anyone can help?

I'm trying to call a parent's constructor or at a minimum get a reference to the parent class in some way without hardcoding anything.

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

class B extends A {

}


Is this possible?

Upvotes: 0

Views: 35

Answers (2)

Jeremy Harris
Jeremy Harris

Reputation: 24549

In a javascript class (and OOP in general), a static method is not part of an instance and therefore the object it resides in does not have a constructor.

You should avoid using static method for this sort of thing and use a standard constructor and call super() to call the parent constructor.

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'});

Further reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/super

Upvotes: 1

Harun Yilmaz
Harun Yilmaz

Reputation: 8558

You can use super() to call parent constructor

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();

Upvotes: 0

Related Questions