¿Hay alguna manera de especificar qué objeto usar para global al invocar eval()
?Uso de eval() con un global personalizado
(no estoy preguntando cómo hacer eval mundial()).
Esto no está funcionando pero esto ilustra lo que me gustaría:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
El punto es que las consolidaciones globales son reales no afectado por la declaración de variable implícita (es decir, sin var palabras clave) en el código eval() 'ed.
En cuanto a eval.call(pseudoGlobal, "x=12")
o eval.apply(pseudoGlobal, ["x=12"])
, algunos intérpretes no lo permitirán.
El objetivo es crear un entorno de ejecución aislado/controlado/seguro dentro del propio Javascript. – gawi