我的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方法中创建最终的参数字符串(即使我在示例中没有包含它)。
答案 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}]"));
然而这是不好的风格。你为什么需要一个字符串?你不能只构建一个对象/数组吗?