Gibt es eine Möglichkeit anzugeben, welches Objekt für global beim Aufruf eval()
verwendet werden soll?Verwendung von eval() mit einem benutzerdefinierten globalen
(Ich frage nicht, wie die globale eval() zu tun.)
Dies funktioniert nicht, aber das zeigt, was würde Ich mag:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
Der Punkt ist, dass die realen globale Bindungen sind nicht betroffen durch implizite Variablendeklaration (dh ohne var Schlüsselwörter) im Code eval() 'ed.
Wie für eval.call(pseudoGlobal, "x=12")
oder eval.apply(pseudoGlobal, ["x=12"])
, erlauben einige Dolmetscher es nicht.
Die Absicht ist, eine isolierte/kontrollierte/sichere Ausführungsumgebung in Javascript selbst zu erstellen. – gawi