有没有instanceof的静态类似功能?即,而不是: obj1 instanceof Type 类似于: TypeA instanceof TypeB

我在这件事上找不到任何东西,所以我黑了一下:

function InstanceOf(type,parent) {
    do{ if(type === parent) return true;}
    while(type = Object.getPrototypeOf(type));
    return false;
}
//...
Instanceof(ChildClass, ParentClass); // = boolean

但我觉得有一个更好/更本土的方式来做到这一点,但再次,找不到任何东西.

有没有更好的/标准的方法来判断静态类继承?还是说我的黑客攻击是最好的?

Update 所以,我很好奇,对我破解的版本和公认答案提供的版本都进行了性能测试,getPrototypeOf版本在运行getPrototypeOf,000次时大约快了一倍. 另外,不,我不能发布测试代码,我是在 node REPL中发布的

推荐答案

你可以用isPrototypeOf美元.

class A {}
class B extends A {}
class C extends B {}
const InstanceOf = (type, parent) => type === parent || parent.prototype.isPrototypeOf(type.prototype);
console.log(InstanceOf(B, A));
console.log(InstanceOf(A, A));
console.log(InstanceOf(C, A));
console.log(InstanceOf(C, B));
console.log(InstanceOf(B, C));

Javascript相关问答推荐

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

是什么原因导致此Angular 16应用程序中类型错误时属性结果不存在?

. NET中Unix时间转换为日期时间的奇怪行为

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

colored颜色 检测JS,平均图像 colored颜色 检测JS

处理时间和字符串时MySQL表中显示的日期无效

cypress中e2e测试上的Click()事件在Switch Element Plus组件上使用时不起作用

使用Promise.All并发解决时,每个promise 的线性时间增加?

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

如何在文本字段中输入变量?

使用Google API无法进行Web抓取

如何使用JavaScript拆分带空格的单词

从页面到应用程序(NextJS):REST.STATUS不是一个函数

如何在DYGRAPS中更改鼠标事件和键盘输入

按什么顺序接收`storage`事件?

处理app.param()中的多个参数

ngOnChanges仅在第二次调用时才触发

是否设置以JavaScript为背景的画布元素?

在高位图中显示每个y轴系列的多个值

如果我将高度设置为其内容的100%,则在Java脚本中拖动以调整面板大小时会冻结