是否存在`instanceof`的静态等价实现?如何检查类继承关系?
类与类之间的静态继承关系检查方案探讨
是否存在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); // 返回布尔值
但我认为应该有更优的原生实现方式,却始终未找到相关资料。
是否存在更优的标准方法来检查类的静态继承关系?还是我编写的这个方案已是最佳选择?
更新
出于好奇,我对自己编写的方案与已采纳答案中的方案进行了性能测试,在执行100,000次的情况下,基于getPrototypeOf的版本速度约快一倍。另外,我无法提供测试代码,因为是在node REPL中完成的测试。
内容的提问来源于stack exchange,提问作者Werlious
相关产品推荐
相关产品推荐

