`function`会产生一个ES6 Class(Babel)的实例吗?

时间:2017-01-20 22:32:58

标签: javascript ecmascript-6 babeljs es6-class

考虑以下ES6(由Babel编译):

class A {};

class B extends A {};

...

function isAnA(func) {
  // Return true if func will produce an A or subclass of A (e.g. B).
}

...

isAnA(B); // should return true

在不创建isAnA()实例的情况下,将func编码为有效的有效方法是什么?

npm上的

is-class要求在函数上运行toString(),这似乎很笨拙。

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

检查B类的prototype对象。

    function isAnA(func) {
     return func.prototype instanceof A;     
    }

    class A {}

    class B extends A{}
    class C extends B{}

    function isAnA(func) {
     return func.prototype instanceof A;     
    }

    console.log(`B ? `,isAnA(B))
    console.log(`C ? `,isAnA(C))