所以我想调用一个 es 6 静态类方法 通过反射使用字符串类名和字符串方法名。 我尝试了几种方法。不幸的是,我似乎没有找到执行此操作的正确方法。
顺便说一下(如以下评论中所述)我正在寻找一种解决方案,我将从 dom 属性中获取类的名称和方法的名称,因此它们需要是一个字符串。
有人可以帮忙吗?
class a{
static b(nr){
alert('and the answer is' + nr)
}
}
let aClassName = 'a',
aMethodeName = 'b',
theCompleteCall = 'a.b',
anArgument = 42;
//Reflect.apply(theCompleteCall,anArgument);
//window[aClassName][aMethodeName](anArgument);
//window[theCompleteCall](anArgument);
最佳答案
因为 let
和 class
没有像您期望的那样在全局范围内声明 (read more),您需要在中声明您的类一个可访问的范围,像这样:
window.a = class a{
static b(nr){
alert('and the answer is' + nr)
}
}
let aClassName = 'a',
aMethodeName = 'b',
theCompleteCall = 'a.b',
anArgument = 42;
然后,你可以像这样用反射调用:
window[aClassName][aMethodeName](anArgument)
因此,解决方案是在声明它们时提供一个范围,并通过该范围访问它们。
关于javascript - ecmascript 6 如何通过反射调用静态类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48558782/