Javascript - Сделать переменные, объявленные в Eval - или новой функции - идти внутри объекта контекста - PullRequest
0 голосов
/ 07 ноября 2018

Для автономного приложения NodeJS мне нужна возможность разбирать произвольный код JS. Это приложение работает в автономном режиме и не взаимодействует ни с чем, кроме ввода пользователя: я могу использовать eval или new Function() без угрозы безопасности.

Однако пользователь может создать переменную внутри своего кода. Мне бы хотелось, чтобы эта переменная создавалась не внутри глобального пространства, а внутри пользовательского объекта контекста, который я бы дал.

Например, получить что-то вроде этого:

let context = {a: 5}
new Function('context', '/*something*/ console.log("a =", a); let b = -5;')(context)
console.log('context is', context)

Будет выводить

a = 5
context is {a: 5, b: -5}

Есть ли способ достичь этого?

...