Czy istnieje sposób określenia, który obiekt będzie używany dla globalnego podczas wywoływania eval()
?Korzystanie z eval() z niestandardowym globalnym
(Nie pytam jak to zrobić globalną eval()).
ten nie działa, ale to pokazuje, co chciałbym:
var pseudoGlobal = {};
eval("x = 12", pseudoGlobal);
pseudoGlobal.x; // 12
Chodzi o to, że prawdziwe globalne powiązania są nie ma wpływu na ukrytą deklarację zmiennych (tj. bez słów kluczowych var) w kodzie eval() 'wyd.
Jeśli chodzi o eval.call(pseudoGlobal, "x=12")
lub eval.apply(pseudoGlobal, ["x=12"])
, niektórzy tłumacze na to nie pozwalają.
Celem jest utworzenie izolowanego/kontrolowanego/bezpiecznego środowiska wykonawczego w samej Javascript. – gawi