2017-06-12 37 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

相关问题