3

我有一个 JSON 对象,如下所示:

var JSON = 
[
  {
    "cat_function":"(function(){console.log('ITS HAPPENING');})();"
  }
]

JSON[0].cat_function;

从我的脚本中,我需要加载函数并执行它。简单地调用JSON[0].cat_function是行不通的,这是我所预料的;让它运行的最佳方法是什么?

澄清一下,这个 JSON 数据来自 CSV,而且这个函数显然比 console.log 更复杂。该函数存储为字符串,对此无能为力。

有任何想法吗?

4

2 回答 2

2

你可以做

var functionCode = JSON[0].cat_function;

var value = eval( functionCode );

无论如何,我应该警告你 eval 是邪恶的,所以如果你可以实现另一种导入代码的方法,那就更好了。

于 2013-06-18T09:20:58.960 回答
1

这更像是一个注释/伪代码,因为我目前不node.js经常使用(所以我可能错了)。

但是如何以类似的方式jsonp在浏览器中工作:

您创建的响应(加载的数据)

handleResponse({
    status : 200,  /* some statuscode like 200, 400 if required */
    data : {
         cat_function : function(){
                            console.log('ITS HAPPENING');
                        },
        some_data : 12345
    }
});

处理响应的函数(在您的应用程序代码中)

 function handleResponse( response ) {
    response.data.cat_function();
 }

您加载和执行它的部分(在您的应用程序代码中)

 vm = require('vm');
 yourResponse = functionToLoadTheResponse();
 vm.runInThisContext(yourResponse);
于 2013-06-18T10:35:53.727 回答