2012-03-09 23 views
5

私は文字列containg anonymus関数定義を持っていますが、どのように呼び出すことができます。文字列からanonymus関数を呼び出す方法

evalをしようとしました
var fn_str = "function(){ alert('called'); }"; 

が、関数は名前を持たなければならないというエラーが発生しました:関数がとても似ていると言うことができます。

eval(fn_str).apply(this); // SyntaxError: function statement requires a name 
+0

あなたは 'A'と' eval'呼び出しますファンクション文字列は 'fn_str'にあります。この方法では動作しません... – gdoron

+0

私は短時間のためにコンソールを使用していましたが、これを変更するのを忘れてしまいました。 – Kristian

答えて

5

あなたは直後に呼び出さ関数式を使用することができます。

var fn_str = "function(){ alert('called'); }"; 
eval('(' + fn_str +')();'); 

Immediately Invoked Function Expression

もう一つの方法は、に使用することです(あなたが関数本体文字列を使用している場合)オブジェクト:

var func = new Function("alert('called')"); 
func.apply(this); 
+1

既に理解しましたが、ありがとう!速い応答のために/ 1を受け入れる:) – Kristian

1

は解決策が見つかりました:カッコ内に入れて機能を

var a = "(function(){ alert('called'); })"; 
eval(a).apply(this); 
+1

'apply'を書く必要はありません。私が答えた**。 – gdoron

+0

私はその構文を知っていますが、(オブジェクトを文字列に解析することなく)そのようにパラメーターとしてオブジェクトを渡すことはできません。または私はできますか? – Kristian

+0

そのコメントで何を意味しましたか、私はそれを理解しませんでした。あなたは何が必要ですか? – gdoron

関連する問題