繁体   English   中英

使用字符串作为函数的参数 (JavaScript)

[英]Use string as argument of a function (JavaScript)

我对 JavaScript 有一个普遍的问题。 我正在尝试通过单独的方法构造我的项目中函数中使用的长参数。 最后我能够生成一个带有必要参数的字符串,但是我不能将它作为参数插入到方法中。 当我这样做时,我从我使用的 API 中得到不同的错误。 问题是,方法中有几个参数,当我插入生成所述参数的方法时,该方法仅将这些参数视为长字符串。 我试过使用 eval() 和 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:我还应该补充一点,build 函数中的这些参数用于在 final 方法中创建最终的参数字符串(即使我没有在示例中包含它)。

您需要将字符串转换为对象。 就像是:

  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}]"));

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM