簡體   English   中英

ecmascript 6如何通過反射調用靜態類方法

[英]ecmascript 6 how to call a static class methode by reflection

所以我想通過反射使用字符串className和字符串方法名稱來調用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並沒有像您期望的那樣在全局范圍內聲明( 更多內容 ),因此您需要在可訪問的范圍內聲明您的類,如下所示:

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)

因此,解決方案是在聲明它們時提供范圍,並通過該范圍對其進行訪問。

您正在將變量設置為字符串,而不是對對象的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM