1

グリースモンキー スクリプトを作成し、環境設定ウィンドウを作成する外部スクリプトを使用しています。設定ウィンドウは、次のコードで初期化されます。

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

コードは、実際には 5 つではなく約 50 個のブロックであり、常に更新されています。私がやりたいことは、読み込まれて配列にされる名前の外部ファイルを持つことです。テスト目的で、テスト配列を使用しています。

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

forループを使用してブロックを作成することを計画していたので、50個では​​なく1個だけになりましたが、必要なフォーマットを壊さないようにする方法がわかりません.

次のようになります。

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

しかし、明らかにそれはうまくいきません。回避策について考えていますか?

4

1 に答える 1

1

そのような 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メソッドは 2 つの引数を取ります。最初のものはthis関数内の値です。関数を呼び出すオブジェクトでなければなりません。2 番目の引数は配列で、その として関数に渡されますarguments

于 2013-02-05T07:40:54.150 に答える