38

给定两个像这样的类:

function A(name) {
    this.name = name;
}

A.prototype.sayName = function() {
    console.log(this.name);
}

var B = require('some-class');

// B is subclass of A?

有没有办法以编程方式确定 B 是否是 A 的子类?

编辑:就我而言, B 是一个函数并B.prototypeextends A.prototype。B 不是 的回报new A()B instanceof A似乎不起作用。

4

1 回答 1

67

检查是否B是子类A(不包括 where 的情况B === A):

B.prototype instanceof A

检查是否B是子类A(包括 where 的情况B === A):

B.prototype instanceof A || B === A

如果您有 的实例B,则第二个测试可以简化为

b instanceof A // where b is an instance of B
于 2013-09-22T01:57:07.510 回答