2011-10-19 17 views
1

私はオブジェクト(関数を持つ)といくつかのデータとargsを送ることができる小さなライブラリを作成しようとしています。オブジェクト、データ、argsをワーカープロセスに送りますこの関数は、関数を含むオブジェクトを文字列化します関数を評価する

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

:その後、

(文字列から関数へ)の機能を再構築することを目的としevalします現在、私はこれを持っています。

私の作業者では、このプロセスを取り消そうとしています。

私は以下を試してみました: eval(object) JSON.parseを実装して、各機能をeval()しようとしました。

私も可能です。このeval("return " + object.function)

を試してみましたか?

+0

ほとんどの場合、evalを使うのは悪い考えです。 –

+1

あなたは何を達成しようとしていますか?私はこの問題の背後にある問題を意味します。 – stivlo

+0

私はWebワーカー全体に計算を分散しようとしています。しかし、私はそれを行う必要がある瞬間までの計算が何であるか分かりません。 – Jeff

答えて

1

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

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

あなただけのどこかでreturn文を入れることができません。

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

+0

ありがとうございます。まさに私が探していたもの。 – Jeff

関連する問題