1

次のような文字列として保存されている関数のリストがあります。

var act= "function () { alert() }";

アクトのタイプを「文字列」から「関数」に変更して、.call()できるようにする必要があります。私はこれで終わる必要があります:

act = function () { alert() };

これはどのように行うことができますか?

4

4 に答える 4

3

これは、evalの使用が有効であるだけでなく正しい場合の数少ないケースの1つです。

var act = eval(function_string);

ただし、文字列に多数の関数があることは、設計が不適切であることを示していることに注意してください。それでも、必要な場合は、evalがその方法です。

于 2012-12-21T02:24:04.120 に答える
2

これを試して:

var act = 'alert(5);';

act = new Function( act );
于 2012-12-21T02:25:22.233 に答える
1

を使用できますがeval、文字列のソースが不明な場合は特に安全でないと見なされます。そこにあるものを変数に実際に割り当てることはできません。eval引数はまたはステートメントである必要があります。あなたはこのようなことをすることができます。

eval("var act = function () { alert('hey') }");    
act();​
于 2012-12-21T02:22:28.800 に答える
1

私はあなたがevalでそれをしなければならないと思います。しかし、多くの人はそれを悪と見なします(安全なソースから文字列を取得するようにしてください)。

var act= "function () { alert() }";
eval ('act = '+ act)
于 2012-12-21T02:23:39.330 に答える