Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ecmascript 6如何通过反射调用静态类methode_Javascript_Reflection_Ecmascript 6_Static_Es6 Class - Fatal编程技术网

Javascript ecmascript 6如何通过反射调用静态类methode

Javascript ecmascript 6如何通过反射调用静态类methode,javascript,reflection,ecmascript-6,static,es6-class,Javascript,Reflection,Ecmascript 6,Static,Es6 Class,所以我想调用一个ES6静态类方法 通过使用字符串类名称和字符串方法名称进行反射。 我试过几种方法。不幸的是,我似乎没有找到正确的方法 顺便说一句(如下面的注释所述),我正在寻找一个解决方案,在这个解决方案中,我将从dom属性中获取类的名称和方法的名称,因此它们需要是一个字符串 有人能帮忙吗 a类{ 静态b(nr){ 警报('答案为'+nr) } } 让aClassName='a', aMethodeName='b', 完成调用='a.b', 辩论=42; //反思。应用(完成调用、辩论); /

所以我想调用一个ES6静态类方法 通过使用字符串类名称和字符串方法名称进行反射。 我试过几种方法。不幸的是,我似乎没有找到正确的方法

顺便说一句(如下面的注释所述),我正在寻找一个解决方案,在这个解决方案中,我将从dom属性中获取类的名称和方法的名称,因此它们需要是一个字符串

有人能帮忙吗

a类{
静态b(nr){
警报('答案为'+nr)
}
}
让aClassName='a',
aMethodeName='b',
完成调用='a.b',
辩论=42;
//反思。应用(完成调用、辩论);
//窗口[aClassName][aMethodeName](辩论);

//窗口[完成调用](辩论)
您正在将变量设置为字符串,而不是对象的引用。

由于
未按预期()在全局范围内声明,因此您需要在可访问的范围内声明类,如下所示:

window.a = class a{
    static b(nr){
    alert('and the answer is' + nr)
  }
}

let aClassName = 'a',
        aMethodeName = 'b',
    theCompleteCall = 'a.b',
    anArgument = 42;
然后,您可以使用反射调用,如下所示:

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](辩论)


因此,解决方案是在声明它们时提供一个作用域,并通过该作用域访问它们。

是的,这是正确的,这正是我想解决的问题。我将从dom中获取属性的字符串。我将编辑我的问题,使其更清楚,谢谢