如何检查Javascript类是否继承了另一个(没有创建obj)?

Sim*_*mon 67 javascript inheritance class

例如:

function A(){}
function B(){}
B.prototype = new A();
Run Code Online (Sandbox Code Playgroud)

如何检查B类是否继承A类?

Nir*_*kku 114

试一试 B.prototype instanceof A

  • 那么**ES6**`class`怎么样?`A类扩展B {}`然后如何检查类'A`的继承 (5认同)
  • @Omid**ES6类语法**大多只是:一些特殊的_syntax_.在幕后,"类"的实际处理没有改变,因此您仍然可以使用`A.prototype` ... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /班 (4认同)

Den*_*ret 28

您可以使用测试直接继承

B.prototype.constructor === A
Run Code Online (Sandbox Code Playgroud)

要测试间接继承,您可以使用

B.prototype instanceof A
Run Code Online (Sandbox Code Playgroud)

(第二种解决方案首先由Nirvana Tikku提供)

  • 不,这只会检查父类,而不是所有的遗产链. (6认同)

per*_*mon 18

回到2017年:
检查一下是否适合您

A.isPrototypeOf(B)
Run Code Online (Sandbox Code Playgroud)

  • 工作完美,但 lint 抱怨。看来,如果程序没有完全控制ParentClass,那么就存在ParentClass伪造答案的风险。它扩展到所有原型函数。如果程序确实可以完全控制 ParentClass 那么应该没有问题。 (2认同)