gpt4 book ai didi

javascript - 如何知道是否通过 super 调用了类构造函数?

转载 作者:数据小太阳 更新时间:2023-10-29 05:18:11 25 4
gpt4 key购买 nike

如果我有这个:

class Human {
constructor(){

}
}

class Person extends Human {
constructor(){
super();
}
}

是否有可能知道是否通过 Person 类调用了 Human 的构造函数?我考虑过 arguments.callee 但它已被弃用。

最佳答案

检查实例是否属于特定子类很容易(但不明智):

class Human {
constructor(){
console.log(this instanceof Person);
}
}

要检查它是否是基类(而不是子类)的实例,您可以使用:

Object.getPrototypeOf(this) === Human.prototype

[只要你没有弄乱类并覆盖prototype对象]

您还可以检查 this.constructor.name 的值 - 它会反射(reflect)调用的初始构造函数的类型,并且在调用基类构造函数时不会改变,尽管这如果代码被缩小,可能会失败。

关于javascript - 如何知道是否通过 super 调用了类构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37242388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com