使用string作为函数的参数(JavaScript)

时间:2017-01-14 12:03:36

标签: javascript string arguments

我的JavaScript存在一般问题。我试图通过单独的方法构建我的项目中的函数中使用的长参数。最后,我能够生成一个带有必要参数的String,但是我不能将它作为参数插入到方法中。当我这样做时,我从我使用的API中得到了不同的错误。问题是,方法中有几个参数,当我插入生成所述参数的方法时,该方法仅将这些参数视为长字符串。我尝试过使用eval()和String()方法,但没有成功。

我知道那些生成的参数是正确的,因为当我使用控制台并逐步完成所有操作时,我可以生成这些参数,然后在方法中手动复制它们,这是有效的。

有人能告诉我如何强制浏览器将插入的String视为“已经用方法编写的代码”吗?

感谢并且抱歉不包含代码,我无法向任何人展示。

编辑: 代码看起来类似于:

function buildArguments(args) {
    var title='Something';
    var interval=1;
    var type='Something';

    var build = '{title: {text: "' + title + '"},' +
        'axis: { interval: ' + interval + '}, ' +
        'dataType: { type: "' + type '"}};'
    return build;}

function graph(args) {
    var graph = new MyGraphAPI.Create(buildArguments(args));
    graph.chart();}

它应该创建这样的东西:

var graph = new MyGraphAPI.Create(
    {
        title: {text: "Something"},
        axis: {interval: 1},
        dataType: {type: "Something"};
    }
);

可能存在一些错误,我只是以急速编写代码作为示例。但是你应该明白这个想法。

Edit2:我还应该补充说,构建函数中的那些参数用于在final方法中创建最终的参数字符串(即使我在示例中没有包含它)。

1 个答案:

答案 0 :(得分:0)

您需要将字符串转换为对象。类似的东西:

  callfunc(eval("{a:1,b:2}"));//equals callfunc({a:1,b:2})

如果你想传递多个参数,并且它们是一个数组,你可以这样做:

callfunc(...["arg1","arg2"]); //equals callfunc("arg1","arg2");

两者在一起:

 callfunc(...eval("['arg1',{someobjval:1,someabjvaltwo:2}]"));

然而这是不好的风格。你为什么需要一个字符串?你不能只构建一个对象/数组吗?