Update Der Code für die Funktion/Klasse ist in einer Zeichenfolge gespeichert, weshalb ich sie nicht direkt aufrufen kann. Die Idee besteht darin, eine Introspektion für das Objekt durchzuführen und seine Datenelemente aufzulisten, was funktioniert, wenn es eine Funktion ist, aber nicht funktioniert, wenn eine Variable wie die folgende ausgewertet wird.Eval Rückgabe des Variablennamens anstelle von undefiniert. (javascript)
Ich versuche ein Objekt in Javascript zu bewerten. Etwas wie das.
var myObj {
greet: "Greeting",
myPrint: function() {
alert("hello");
}
};
Die Idee ist in der Lage sein, dies in eval zu laufen und die Variablennamen erhalten irgendwie (myObj) oder ein Objekt erstellt. Ich habe mit verschiedenen Methoden mit Eval experimentiert, kann das aber nicht herausfinden. Das funktioniert, wenn ich so etwas habe.
function myObj() {
this.greet = "Greeting";
this.myPrint = function() {
alert("hello");
}
};
Laufeval ("(" + code + ")"); wo Code eine Zeichenfolge ist, die die obige Funktion enthält, gibt myObj() an mich zurück.
Update 2 Also im Grunde möchte ich etwas wie dies bewerten. eval ("var x = 5"); und ich versuche, x zu bekommen. Da es sich um eine Zeichenfolge handelt, die ausgewertet wird, gibt es keine Möglichkeit, sie zu entschlüsseln, abgesehen von der Analyse der Zeichenfolge, obwohl sie dem Fenster-Namespace hinzugefügt wird. Dies ist nur ein einfaches Beispiel, aber wie gesagt, es ist ein wenig schwierig mit dem ersten Code. Wie gesagt ... eval ("function test() {return 'hallo';}"); Rückgabetest() ähnlich dem, was ich für die Anweisung "var x = 5" erwarte.
Gibt es eine Möglichkeit, dies ähnlich für den 1. Fall zu tun, den ich vermisse? Vielen Dank
Ich bin nicht ganz sicher, was Sie tun möchten, aber die drängendere Frage ist * warum * wollen Sie das tun? Was versuchst du zu lösen? –
Grundsätzlich möchte ich alle Datenelemente einer Klasse/Funktion untersuchen. Der Code ist jedoch tatsächlich willkürlich und wird in ein Textfeld eingefügt, von dem aus ich inspizieren muss. (Stellen Sie es sich als eine Art Feature für eine IDE vor, die alle Datenelemente anzeigen kann). Ich weiß, dass das Ausführen von beliebigem Code auf eval gefährlich ist, aber das ist für einen ganz anderen Zweck. – ssarangi
Ihr 'myObj' Code ist kein gültiges Javascript. Ist es sicher anzunehmen, dass es sich um einen Tippfehler handelt, oder ist dieser tatsächliche Inhalt, den Sie irgendwie bewerten müssen? –