Javascript 访问模块中与另一模块中的函数名称相似的函数
代码: 我在Javascript 访问模块中与另一模块中的函数名称相似的函数,javascript,node.js,Javascript,Node.js,代码: 我在RESTCalls\u GET中循环函数。例如,i=getComponent,一个名为getComponent\u RESTCall的函数将位于模块restCalls 有人告诉我,实现这一点的一种方法是使用eval()(尽管不建议这样做)。这种方法不起作用,当我调试时,在mockURLForSucceed中使用eval()的参数是未定义的 这显然导致我所有的测试都失败了 如有任何建议,我们将不胜感激 编辑:(附加信息) 编辑:(中途) 我重新使用eval()获得了file.funct
RESTCalls\u GET
中循环函数。例如,i=getComponent
,一个名为getComponent\u RESTCall
的函数将位于模块restCalls
有人告诉我,实现这一点的一种方法是使用eval()(尽管不建议这样做)。这种方法不起作用,当我调试时,在mockURLForSucceed
中使用eval()的参数是未定义的
这显然导致我所有的测试都失败了
如有任何建议,我们将不胜感激
编辑:(附加信息)
编辑:(中途)
我重新使用eval()获得了file.functionName格式中所需的函数/变量名,如下所示:
如果这些是字符串,我现在遇到的问题是。所以当我把它们传递到一个函数中时,它得到的是字符串值,而不是它在自己的函数中所等于的值,这有意义吗
我的意思是,如果我现在将restcallerl
传递到一个函数中,那么该参数的值将是restCallshttp://whatever
)。既然我现在有了函数的名称,我能用这个名称在我的项目中搜索函数吗
这项任务似乎很简单,我想我想我已经想得太多了。我认为你不需要eval
那么,使用
var RESTCallURL = eval('"restCalls." + i + "_RESTCall"');
var RESTCallData = eval('"RESTCalls_GET_ExampleData." + i + "_ExampleData"');
通过在浏览器控制台中定义以下内容,可以轻松测试此行为
RESTCalls_GET[i](function(result) {
result.should.equal(RESTCalls_GET_ExampleData[i + '_ExampleData']));
done();
});
这改善了这种情况,因为函数mockURLForSucceed
现在实际上正在执行。然而。未定义其URLofRESTCall
和succeedData
的参数。我将编辑我的帖子,以便您可以看到该功能
var RESTCallURL = eval('"restCalls." + i + "_RESTCall"');
var RESTCallData = eval('"RESTCalls_GET_ExampleData." + i + "_ExampleData"');
RESTCalls_GET[i](function(result) {
result.should.equal(RESTCalls_GET_ExampleData[i + '_ExampleData']));
done();
});
var test = {
'some-function': function() { console.log('works'); }
};
test['some-function']();