2016-06-24 4 views
0

Ich habe eine Zeichenfolge in Javascript. Was ich brauche ist, es als Code zu speichern:Speichere String als Code in Javascript

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

Wie kann ich tun? Ich brauche nicht eval(), weil ich in diesem Moment nicht bewerten muss.

+3

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

+0

Fragen Sie, wie eine Funktion für die spätere Ausführung basierend auf Code in einer Zeichenfolge erstellt wird? Was ist der Kontext von "diesem"? –

+0

@AlexK. eigentlich habe ich keinen Kontext .. Ich muss es in einem Objekt speichern .. in diesem Objekt haben diese einen Kontext – granmirupa

Antwort

3

versuchen

new Function(string) 

zum Beispiel

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

Hinweis: Mit Function Konstruktor (wie bei eval) Sie werden in der Lage, jeden beliebigen Code auszuführen, der konnte sei ein Sicherheitsrisiko, wenn es vom Benutzer abgeleitete Texte enthält. Nicht so ein Problem, wenn es definitiv der aktuelle Benutzer ist, der es eingegeben hat (sie haben andere Möglichkeiten, Code auf der Seite auszuführen), aber wenn Sie Text von Benutzer A als Code auf dem Browser von Benutzer B ausführen, ist das ein massiver nicht -Nein.

1

Sie könnten new Function() Objekt erstellen. Beachten Sie, dass Sie dies so weit wie möglich vermeiden sollten, da new Function() and eval() are dangerous!

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

Sie können über diese mehr here lesen.

Verwandte Themen