在JavaScript/ES7类中动态调用静态方法

在JavaScript/ES7类中动态调用静态方法,javascript,ecmascript-2016,es6-class,Javascript,Ecmascript 2016,Es6 Class,我在字符串变量中有类名。我想在动态类上调用addField静态方法 const className = "CustomClient"; // comes from dropdown. CustomClient.addField(); CustomClient是ES7类的名称。addField是静态方法。我想动态调用addField。该类可以是CustomClient、CustomContract或CustomUser中的一个。当您想通过名称引用一个类时,无论是实例化该类,还是调用该类上的静态方

我在字符串变量中有类名。我想在动态类上调用addField静态方法

const className = "CustomClient"; // comes from dropdown.
CustomClient.addField();

CustomClient是ES7类的名称。addField是静态方法。我想动态调用addField。该类可以是CustomClient、CustomContract或CustomUser中的一个。

当您想通过名称引用一个类时,无论是实例化该类,还是调用该类上的静态方法或其他方法,都是相同的:您必须构建一个名称→ 类映射并进行查找:

const classes = {
    "CustomClient": CustomClient,
    …
}
var classRef = classes[className];
在你的情况下,应该是

const classes = {CustomClient, CustomContract, CustomUser}; // shorthand notation
classes[className].addField();

当您想通过名称引用一个类时,无论是实例化它、对它调用静态方法还是其他什么,都是一样的:您必须构建一个名称→ 类映射并进行查找:

const classes = {
    "CustomClient": CustomClient,
    …
}
var classRef = classes[className];
在你的情况下,应该是

const classes = {CustomClient, CustomContract, CustomUser}; // shorthand notation
classes[className].addField();

是否需要创建类
CustomClient
的实例?不,只需调用该类上的静态方法。是否使用模块?如果是这样,您可能需要导入该类是否需要创建该类的实例
CustomClient
?不,只需调用该类的静态方法。是否使用模块?如果是这样,您可能需要导入该类