例如,我们有一个变量和一个名为foo
和plus
的函数:
var foo = 2
;
var plus = function(a,b){return a+b;}
我们有一个字符串:
var s = '1 plus foo';
现在我希望这个字符串s
转换到一个数组:
var array = [1, plus, foo]);
请注意,不是[1, 'plus', 'foo']
哪种转换相当容易,我知道。
因此,我的问题将是
如何从字符串中获取值(函数)本身?
还请注意,使用eval
来解决此问题是无效的,因为的目的不是评估,而是从字符串构建数组。
感谢。
编辑:
因为我使用node.js
全局对象为global
和
它似乎
global.foo
和var foo
不同。
我觉得在这个问题之前这就是我在这里问的原因。
[1, global['plus'], global['foo']]
应该是无效答案。
答案 0 :(得分:0)
如果您执行 s.split(' ');
,您可以使用数组中的字符串来调用所请求的函数:
window['plus']() // Call your functions like this.
或者将它们设置在一个数组中:
var array = [1, window['plus'], window['foo']];
然后,您将在array
中存储函数引用。
答案 1 :(得分:0)
我的回答:
var G = {};
var foo = G.foo = 2
;
var plus = G.plus = function(a,b){return a+b;}
我们有一个字符串:
var s = '1 plus foo';
现在我希望这个字符串s
转换到一个数组:
var array = [1, G['plus'], G['foo']];
通过这种方式,我们可以避免全局变量并保持var foo
格式,同时允许使用G object + ['string']访问该值。