1

オブジェクト(関数を含む)といくつかのデータ、および引数を送信できる小さなライブラリを作成しようとしています。これにより、オブジェクト、データ、および引数がワーカープロセスに送信され、ワー​​カープロセスがオブジェクトを評価して再構築します。関数(文字列から関数まで)

現在私はこれを持っています:

JSON.stringify(object, function(key, val) { if typeof val === 'function' { return val + '' } return val });

この関数は、関数を含むオブジェクトを文字列化します。

私の労働者では、このプロセスを元に戻そうとしています。

私は次のことを試しました eval(object) 。JSON.parseの実装も試みましたが、関数に出くわしたときに各関数をeval()しようとしました。

私も試しましたeval("return " + object.function)

これは可能ですか?

4

1 に答える 1

1

あなたはおそらく欲しい:

eval("(" + object.function + ")");

returnステートメントをどこかに置くことはできません。

function() {}は関数宣言として評価されますが、名前がないため失敗します。解析されるデータは、のような関数式を表すため、式として評価されるように、その周りにvar f = function() {}配置する必要があります。()

于 2011-10-19T15:05:43.913 に答える