nodejs中的动态函数调用

时间:2013-12-26 12:21:22

标签: javascript node.js

我是nodeJS的新手,现在我正在编写一个连接到外部api的小型服务。 这个api有几种类型的对象,每个对象有几种类型的函数。 我希望我的服务能够查询这个api,但我想要的是查询将在它自己的json文件中定义,所以为了将来的使用,人们可以添加/删除/更改这些查询。

json文件的示例:

{
  "object": "foo",
  "function": "bar",
  "params": {
    "x": "1",
    "y": "2"
  }
}

对象是'foo',是'bar',并且params将作为整个json对象传递,所以我真的不关心这部分。

如何创建对象'foo',然后调用函数'bar'?

1 个答案:

答案 0 :(得分:2)

如果我理解的话...说你加载这样的查询值...(假设可能需要进行微小的改动才能使这个工作,或者使用另一种方法将文件内容作为字符串加载然后解析它等.....)

var fileJSON = require('./test.json');
var meta = JSON.parse(fileJSON);

...然后假设“foo”对象是当前方法上下文中的一个字段(即这个)......(这可能甚至不正确)你“可能”做一些像这样的时髦...... < / p>

this[meta.object][meta.function](meta.params);

即。从上下文中获取“foo”对象,从该对象中获取“函数”函数,并且我们称之为将params作为对象传递(如果你需要这个我不确定)

警告:   - 我不确定“foo”是否是当前对象(这个)上的字段是正确的但我确定你可以调整这个......你只需要改变 this 无论对象是什么,在一个字段中有“foo”对象或类似的东西,即构造“foo”的实例......不知道事物是如何构造的,这是我认为我能给你的最好的例子。   - 我不确定nodejs(v8)是否会阻塞.object和.function ...你可能不得不这样做

this[meta["object"]][meta["function"]](meta.params); 
  • 这是未经测试的,我没有时间进行测试,但我希望在我拥有它的那段时间内至少可以帮助你。如果它没有那么无所谓。希望它有所帮助!