Для автономного приложения 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}
Есть ли способ достичь этого?