2017-06-12 110 views
0

使用打字稿,我需要一些字符串,如「Math.floor」和「的console.log」轉換爲數學函數.floor和console.log,以便能夠在作爲字符串參數傳遞時使用這些函數。打字稿 - 如何將字符串(「執行console.log」)轉換爲功能(執行console.log)

例如

applyFunction ("Math.floor", 4.2); // => Math.floor(4.2) => 4 
applyFunction ("console.log", "Hi"); // => console.log("Hi") => Hi 

等。

我試圖將其添加爲鍵和值中的對象和掃描對象需要時。但由於我沒有時間繼續搜索並添加所有現有的Typescript函數,因此我正在尋找更全面的方法。

回答

2

FWIW,你可以使用eval()解析字符串作爲密碼。

例子:

eval("console.log('foo')")

話雖這麼說,我會建議你be careful when using eval()

+0

對於我來說,擔任: 的eval( 「執行console.log」)( '富'); Thanx很多 – TamerB

1

如果您使用的瀏覽器,你可以這樣做:

window['Math']['floor'](4.2); 
window['console']['log']('Hi'); 

確保您遍歷命名空間,與eval(String)效果更好。

+0

我已經發布了一個答案,下面使用'eval',但我更喜歡這個更好 –

+0

@NicholasKyriakides eval(字符串)更好地完成了這項工作,這一個只是它在瀏覽器中的另一種方法,困難的,因爲它爲什麼難,簡單的拆分則必須遍歷命名空間 – Fals

+1

和減少 – epascarello