如果我有这个:
class Human {
constructor(){
}
}
class Person extends Human {
constructor(){
super();
}
}
是否可以知道是否通过Person
类调用了Human的构造函数?我考虑过arguments.callee
但是已经弃用了。
答案 0 :(得分:6)
检查实例是否属于特定子类很容易(但不明智):
class Human {
constructor(){
console.log(this instanceof Person);
}
}
要检查它是否是基类的实例(而不是子类),您可以使用:
Object.getPrototypeOf(this) === Human.prototype
[只要您没有弄乱类并覆盖prototype
对象]
您还可以检查this.constructor.name
的值 - 它将反映所调用的初始构造函数的类型,并且在调用基类构造函数时不会更改,但如果代码被缩小,则可能会失败