javascript - 如何在大括号内的代码块周围使用 for 循环?

标签 javascript for-loop greasemonkey curly-braces

我正在编写一个greasemonkey脚本并使用一个外部脚本来创建一个首选项窗口。首选项窗口使用以下代码初始化:

USP.init({
        theName: 'show_advd',
        theDefault: true
    }, {
        theName: 'show_ahd',
        theDefault: true
    }, {
        theName: 'show_at',
        theDefault: true
    }, {
        theName: 'show_bithd',
        theDefault: true
    }, {
        theName: 'show_bmtv',
        theDefault: true
    });

代码实际上包含大约 50 个这样的 block ,而不是仅仅 5 个,并且它会不断更新。我想要做的是有一个外部文件,其中的名称将被读入并放入数组中。出于测试目的,我仅使用测试数组。

var test = ['test0','test1','test2'];

现在我计划使用 for 循环来创建 block ,这样我就只有一个而不是 50 个,但我不知道如何不破坏必要的格式。

它看起来像这样:

USP.init(
for(int i=0;i<test.length;i++)
{
    {
        theName: test[i],
        theDefault: true
    }
});

但显然这是行不通的。关于解决方法的想法?

最佳答案

您不能包含这样的 for 循环,因为它是一个语句,并且不会计算为表达式。您只能将表达式作为函数的参数,这里的 {...} 术语是对象文字,它们只是计算结果为对象的表达式。

您需要做的是使用 for 循环创建一个数组,并使用 Function.apply 将其传递给您的函数。

这是一个例子:

var args = [];

for (var i = 0; i < test.length; i++) {
  args.push({
    theName    : test[i],
    theDefault : true
  });
}

USP.init.apply(USP, args)

apply 方法采用两个参数。第一个是函数内部this的值;它必须是您想要调用函数的对象。。第二个参数是一个数组,它将作为其参数传递到函数中。

关于javascript - 如何在大括号内的代码块周围使用 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14702344/

相关文章:

javascript - Twitter 预输入 Bloodhound token 不起作用

javascript - 有没有办法正确搜索一个对象并用 ES6 替换它的值?

python - 尝试计算 .txt 文件中的点之间的距离

for-loop - string.match 在 Lua for 循环中不起作用

javascript - 如何在 Greasemonkey 中为 firefox 创建快捷方式?

javascript - 使用 GM_xmlhttpRequest 获取多个外部 URL,将页面 <H1> 添加到链接?

javascript - 此页面需要 javascript。请启用浏览器的JavaScript

javascript - 在 url 中传递参数而不是参数对象 :

javascript - 加速 Ajax 成功 DOM 操作

javascript - 在 Node JS for 循环中递增 SQL 结果[0]