检查ES6中的构造函数是否继承另一个构造函数

53 浏览
0 Comments

检查ES6中的构造函数是否继承另一个构造函数

我有一个情况,我需要检查一个构造函数(X)在其原型链中是否有另一个构造函数(Y)(或者Y本身)。

最快的方法可能是使用(new X()) instanceof Y。但在这种情况下这不是一个选项,因为涉及的构造函数如果没有有效的参数实例化可能会抛出异常。

我考虑的下一种方法是:

const doesInherit = (A, B) => {
  while (A) {
    if (A === B) return true;
    A = Object.getPrototypeOf(A);
  }
  return false;
}

这种方法是有效的,但我感觉可能还有更简单的方法来检查这个。是否有其他方法?

0