【问题标题】:How do you get a list of all class children in JavaScript?你如何获得 JavaScript 中所有子类的列表?
【发布时间】:2018-12-01 10:48:32
【问题描述】:

我有很多课,但是对于这个问题,我会简化一下。

class A {

}

class B extends A {

}

class C extends A {

}

class D extends C {

}

现在我的问题是:如何获得一个班级(所有,不仅是直接)孩子的列表?所以,A.getChildren() 将是 [B, C, D]C.getChildren() 将是 [D]。顺便说一句,我只是在寻找纯 JavaScript 解决方案。

也许这根本不可能,我需要从完全不同的方式来解决这个问题,比如在其父类中注册每个类。

那么,是否有一个简单的函数(编写的或只是内置的)可以做到这一点,如果甚至不可能,我应该以什么其他方式解决这个问题?

【问题讨论】:

    标签: javascript class inheritance


    【解决方案1】:

    如果您可以控制A 的构造函数并且如果每个类都至少实例化一次,那么您可以在构造函数中添加一行,将子类添加到Set

    const classes = new Set();
    class A {
      constructor() {
        classes.add(this.constructor);
      }
    }
    
    class B extends A {
    
    }
    
    class C extends A {
    
    }
    
    class D extends C {
    
    }
    new B();
    new B();
    new C();
    new D();
    console.log([...classes]);

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      相关资源
      最近更新 更多