Ole Haugset
Ole Haugset

Reputation: 3797

Get javascript class name or typeof in parent constructor

I have two classes in Javascript like this:

class Parent {
    constructor(){
        console.log(typeof this);
    }
}

class Child extends Parent {
    constructor(){
        super();
    }
}

In the Parent class, I would like to know what class instantiated it. However, typeof just returns object. Is there any other way to solve this?

Upvotes: 0

Views: 380

Answers (2)

Bergi
Bergi

Reputation: 664297

Since you are using ES6 classes, new.target is what you are looking for. But notice that it's usually an antipattern to let a constructor's behaviour depend on particular child classes.

Upvotes: 1

Felix Kling
Felix Kling

Reputation: 816334

this.constructor will return the constructor function with which the objet was created. You could access this.constructor.name if you need a string.

class Parent {
    constructor(){
        console.log(this.constructor.name);
    }
}

class Child extends Parent {
    constructor(){
        super();
    }
}

new Child(); // Child
new Parent(); // Parent

Upvotes: 3

Related Questions