如何测试B是否是Javascript / Node中A的“子类”?

时间:2013-09-22 00:43:53

标签: javascript node.js

给出两个类如下:

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.prototype扩展A.prototype。 B不是new A()的回报。 B instanceof A似乎不起作用。

1 个答案:

答案 0 :(得分:47)

检查BA的子类(B === A除外)

B.prototype instanceof A

检查BA的子类(包括B === A的情况):

B.prototype instanceof A || B === A
new B() instanceof A // shorter, but creates an instance of B