所以我想调用一个es 6静态类方法 通过使用字符串className和字符串方法名称进行反射。 我尝试了几种方法。不幸的是,我似乎没有找到正确的方法来做到这一点。
顺便说一下(如下面的评论中所述)我正在寻找一个解决方案,我将从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);

答案 0 :(得分:3)
由于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)
因此,解决方案是在声明范围时提供范围,并通过该范围访问它们。
答案 1 :(得分:-2)
您将变量设置为字符串而不是对象的引用。