如何使用javascript获取类型的所有类子类型?

如何使用javascript获取类型的所有类子类型?,javascript,Javascript,我有一个类a和一个类B扩展a我需要找到所有的类B和扩展a的其他类。这有两个方面: 具有要检查的类(构造函数)列表 检查 没有什么内在的东西能帮你,你必须自己做。通过class创建的函数不会作为属性添加到全局对象中 一旦你有了这个列表,#2就成为可能,因为class锁定了它创建的函数的prototype属性(你不能用其他东西替换它),你可以与instanceof和对象建立关系。getPrototypeOf: if (B.prototype instanceof A) { // B ex

我有一个类a和一个类B扩展a我需要找到所有的类B和扩展a的其他类。

这有两个方面:

  • 具有要检查的类(构造函数)列表

  • 检查

  • 没有什么内在的东西能帮你,你必须自己做。通过
    class
    创建的函数不会作为属性添加到全局对象中

    一旦你有了这个列表,#2就成为可能,因为
    class
    锁定了它创建的函数的
    prototype
    属性(你不能用其他东西替换它),你可以与
    instanceof
    对象建立关系。getPrototypeOf

    if (B.prototype instanceof A) {
        // B extends A, directly or indirectly
    }
    
    if (Object.getPrototypeOf(B.prototype) === A.prototype) {
        // B extends A directly
    }
    
    对于旧的ES5语法来说,这并不一定可靠,因为正常函数上的
    原型
    不是只读的

    实时示例:(需要支持
    类的浏览器)

    “严格使用”;
    甲级{
    }
    B类扩展了A类{
    }
    C类{//
    }
    log(“B.prototype instanceof A?”+(B.prototype instanceof A));
    console.log(“Object.getPrototypeOf(B.prototype)==A.prototype?”+(Object.getPrototypeOf(B.prototype)==A.prototype));
    log(“C.prototype instanceof A?”+(C.prototype instanceof A));
    
    console.log(“Object.getPrototypeOf(C.prototype)==A.prototype?”+(Object.getPrototypeOf(C.prototype)==A.prototype))这有两个方面:

  • 具有要检查的类(构造函数)列表

  • 检查

  • 没有什么内在的东西能帮你,你必须自己做。通过
    class
    创建的函数不会作为属性添加到全局对象中

    一旦你有了这个列表,#2就成为可能,因为
    class
    锁定了它创建的函数的
    prototype
    属性(你不能用其他东西替换它),你可以与
    instanceof
    对象建立关系。getPrototypeOf

    if (B.prototype instanceof A) {
        // B extends A, directly or indirectly
    }
    
    if (Object.getPrototypeOf(B.prototype) === A.prototype) {
        // B extends A directly
    }
    
    对于旧的ES5语法来说,这并不一定可靠,因为正常函数上的
    原型
    不是只读的

    实时示例:(需要支持
    类的浏览器)

    “严格使用”;
    甲级{
    }
    B类扩展了A类{
    }
    C类{//
    }
    log(“B.prototype instanceof A?”+(B.prototype instanceof A));
    console.log(“Object.getPrototypeOf(B.prototype)==A.prototype?”+(Object.getPrototypeOf(B.prototype)==A.prototype));
    log(“C.prototype instanceof A?”+(C.prototype instanceof A));
    
    console.log(“Object.getPrototypeOf(C.prototype)==A.prototype?”+(Object.getPrototypeOf(C.prototype)==A.prototype))您没有提供足够的信息。您是否使用sass/less?您是否必须查找所有扩展类A的HTML元素,或者只查找文件中的类?@DarkoRiđićless/sass与此有什么关系?(他不是在谈论css类)如何扩展类?我不确定这是一个格式正确的问题。@zer00ne这是一个新的ES2015问题。您没有提供足够的信息。您是否使用sass/less?您是否必须查找所有扩展类A的HTML元素,或者只查找文件中的类?@DarkoRiđićless/sass与此有什么关系?(他不是在谈论css类)如何扩展类?我不确定这是一个格式正确的问题。@zer00ne这是一个新的ES2015问题。