gpt4 book ai didi

javascript - 查找 Javascript 应用程序中扩展基类的所有类

转载 作者:数据小太阳 更新时间:2023-10-29 06:06:02 25 4
gpt4 key购买 nike

我有这样的代码

class Animal{}
class Dog extends Animal {}
class Cat extends Animal {}
class Donkey extends Animal {}

我想查看应用程序宇宙中的所有类,当我找到一个从 Animal 派生的类时,我想创建一个该类型的新对象并将其添加到列表中。这允许我添加功能而无需更新事物列表。所以我可以避免以下情况:

var animals = [];
animals.push( new Dog() );
animals.push( new Cat() );
animals.push( new Donkey() );

PS:我不想向我的类添加额外的功能或显式调用它们。

最佳答案

我认为您可以使用装饰器。例如,您可以创建一个 @Extends() 并提供基类作为参数,例如@Extends(Animal)。在装饰器函数中,您可以获取用 @Extends 装饰的类的名称,并将其放入数组或对象中。不知道它是否适用于浏览器,但应该适用。在带有 TypeScript 的 Node 中,我会做类似的事情:

import { MyClassMetadata } from './';

export function Extends(parent): (...args: any[]) => void {
return (target: object): void => {
MyClassMetadata.someVariableToStoreChildren[parent.constructor.name].push(
target,
);
}
}

然后您可以访问存储给定类的子级数组的 MyClassMetadata 变量,并按您想要的方式使用它。您可以使用它并获得所需的结果。

关于javascript - 查找 Javascript 应用程序中扩展基类的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618212/

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