0

150 個の JavaScript 関数を含む JavaScript 配列があります (これらの関数は財務指標を返します)。ページをロードすると、この配列があります。そのページでこれらのロードされた関数を使用することは可能ですか?

配列を文字列に変換しました。下の図は、アラート モードでどのように見えるかを示しています。

アリーアラートモード http://bsl.site40.net/pic/8cdf49ea54ee.jpg

上の図では、(関数 a、b、c) は関数が実行される場所であり、150 個の関数があります (文字列 {"itemCode":___} は、関数を広告するたびに繰り返されます)。文字列を置き換えてから、そのページに何らかの方法で関数を挿入する必要があると思います。うーん、わかりません。手伝って頂けますか?もう 1 つ質問があります。JavaScript 配列が非常に長くなる可能性はありますか (たとえば 20000 文字)?

編集:私の配列には関数の完全なコードがあります。その写真では、写真が見えるように名前だけを示しました

4

2 に答える 2

2

配列の代わりに json オブジェクトを使用することをお勧めします。検索が簡単になります。配列を使用し続ける場合は、正しい関数名/関数を見つけるために配列をループする必要があります。

json オブジェクトがグローバルに宣言された関数名を保持している場合、次のように呼び出すことができます

var functionName = "myFunc";
window[functionName]();

ただし、関数をグローバルに宣言するのではなく、ある種の名前空間に格納する必要があります。

jsonオブジェクトに実際の関数が含まれている場合(これをお勧めします)、次のように呼び出すことができます

var functionName = "myFunc";
myObject[functionName]();

オブジェクトに関数コードが文字列として含まれている場合は、それを実行するために評価する必要があります。関数は括弧で囲む必要があります。この方法はお勧めしません。ある種のjsonpを使用して関数を動的にロードする方がさらに良いでしょう。

var functionName = "myFunc";
var myFunc = eval('(' + myObject[functionName] + ')');
myFunc();

配列には最大 4,294,967,296 個の要素を含めることができますが、それに到達するずっと前にパフォーマンスを台無しにしてしまうでしょう。json オブジェクトのタフさについてはよくわかりません。

于 2012-08-06T12:02:52.327 に答える
0

関数が文字列として格納されている場合は、関数 eval(string) を使用できます。ただし、これはお勧めできません。このように括弧を使用してオブジェクトとして格納されている場合 (functionName) で十分です。

于 2012-08-06T12:10:01.750 に答える