Reputation: 3797
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
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
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