Javascript Typescript-如何将字符串(“console.log”)转换为函数(console.log)

Javascript Typescript-如何将字符串(“console.log”)转换为函数(console.log),javascript,typescript,Javascript,Typescript,使用typescript,我需要将一些字符串(如“Math.floor”和“console.log”)转换为函数Math.floor和console.log,以便在作为字符串参数传递时能够使用这些函数 比如说 applyFunction ("Math.floor", 4.2); // => Math.floor(4.2) => 4 applyFunction ("console.log", "Hi"); // => console.log("Hi") => Hi 等等

使用typescript,我需要将一些字符串(如“Math.floor”和“console.log”)转换为函数Math.floor和console.log,以便在作为字符串参数传递时能够使用这些函数

比如说

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

我尝试将它们作为键和值添加到对象中,并在需要时扫描对象。但由于我没有时间连续搜索和添加所有现有的Typescript函数,我正在寻找一种更全面的方法。

FWIW您可以使用它将字符串作为代码解析

例如:

eval(“console.log('foo')”)
FWIW可用于将字符串作为代码进行解析

例如:


eval(“console.log('foo')”)
如果使用浏览器,可以执行以下操作:

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

确保迭代名称空间,eval(string)工作得更好。

如果使用浏览器,可以执行以下操作:

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

确保迭代名称空间,eval(string)效果更好。

我在下面发布了一个答案,使用
eval
,但我喜欢这个better@NicholasKyriakideseval(string)做得更好,这只是浏览器中的另一种方法,但这很难,因为您必须在名称空间上进行迭代。为什么很难,简单的拆分和还原eval('Math.floor')(4.2)在我的情况下要容易得多。谢谢你对Espacarelos的评论“Math.floor”。split(“.”)。reduce((o,i)=>o[i],window)(5)我在下面发布了一个使用
eval
的答案,但我喜欢这个better@NicholasKyriakideseval(string)做得更好,这只是浏览器中的另一种方法,但这很难,因为您必须在名称空间上进行迭代。为什么很难,简单的拆分和还原eval('Math.floor')(4.2)在我的情况下要容易得多。感谢大家对Espacarelos的评论“Math.floor”。split(“.”)。reduce((o,i)=>o[i],window)(5)对我来说,它的作用是:eval(“console.log”)('foo');Thanx对我来说,它的作用是:eval(“console.log”)('foo');阿洛特