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