javascript - ecmascript 6 如何通过反射调用静态类方法

标签 javascript reflection ecmascript-6 static es6-class

所以我想调用一个 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);

最佳答案

因为 letclass 没有像您期望的那样在全局范围内声明 (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/

相关文章:

javascript - chrome.tabs.executeScript 不工作

javascript - 如何在javascript中获取对象的第一个成员

javascript - 带有 ES6 模板字符串的 MongoDB 对象键

java - Java Reflection如何动态生成方法调用者类的新实例?

c# - 是否可以通过反射调用值类型运算符?

具有唯一键的javascript和es6过滤器数组

javascript - 理解 ES6 中的箭头

javascript - 断开或重新加载时Io套接字重置连接

javascript - 尝试将数字标签转换为 int

javascript - 滚动时更改导航栏固定顶部颜色