2016-06-24 5 views
0

私はJavascriptで文字列を持っています。私が必要とするのはコードとして保存することです:文字列をjavascriptのコードとして保存します

var string = "this.count++"; 
var func1 = {}; 
func1['f'] = string; // should be saved as executable code.. 

どうすればいいですか?私はeval()を必要としません。私はこの瞬間に評価する必要はありません。

+3

'var string =()=> this.count ++; var func1 = {}; func1 ['f'] = string(); ' –

+0

文字列のコードに基づいて後で実行するための関数を作成する方法を尋ねていますか? 「this」の文脈は何ですか? –

+0

@AlexK。実際にはこれはコンテキストがありません。オブジェクトに保存する必要があります。そのオブジェクトにコンテキストがあります – granmirupa

答えて

3

var string = "this.count++; console.log(1)"; 
 
new Function(string)();

例えば

new Function(string) 

を試してみてください(evalのように)Functionコンストラクタを使用すると、あなたはどの可能性のある任意のコードを実行することができるようになりますセキュリティリスクにユーザー由来テキストが含まれている場合。入力した現在のユーザー(ページ上にコードを実行する別の方法があります)が問題ではありませんが、ユーザーAのテキストをユーザーBのブラウザのコードとして実行している場合は、大量の -no。

1

new Function()オブジェクトを作成できます。可能な限り避けてください。new Function() and eval() are dangerous

func1['f'] = new Function(string). 

あなたはhereこの詳細について読むことができます。

関連する問題