gpt4 book ai didi

javascript - 在 Coffeescript/Javascript 中自动注册基类

转载 作者:行者123 更新时间:2023-12-03 11:33:34 25 4
gpt4 key购买 nike

给定一组像这样的 Coffeescript 类:

class A

class B extends A

class C extends B

有没有办法获取 A 的子类列表,以便可以注册它们,例如

A.types = {}
A.types[class.name] = class for class in subclasses(A)

获取

A = {
"A": A,
"B": B,
"C": C
}

唯一想到的就是手动将每个类添加到 A.types 中,但我只是好奇是否有一种方法可以自动执行此操作。

我希望已经有这样的问题和答案,但我找不到它。

最佳答案

我能想到的唯一方法是在某种命名空间中注册所有这些类,并添加在该命名空间内查找子类的方法,如下所示:

App =
findSub: (obj) ->
item for className, item of @ when className isnt 'findSub' and ((item.__super__ is undefined and item is obj) or item.__super__ is obj.prototype or item.__super__ instanceof obj)

class App.A

class App.B extends App.A

class App.C extends App.B

class App.D

console.log App.findSub App.A // [A(), B(), C()]

jsFiddle

关于javascript - 在 Coffeescript/Javascript 中自动注册基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26631593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com