Я сомневаюсь, что это возможно, но я бы хотел попробовать.
Я бы хотел написать функцию, которая вводит новые переменные в область действия вызывающей стороны .
Цель состоит в том, чтобы сделать что-то вроде этого:
(function() {
var x = {a: 5, b:6};
console.log(typeof a, typeof b); // prints: undefined undefined
magicImport(x);
console.log(a, b); // prints: 5 6
})();
// Variables are not in global scope
console.log(typeof a, typeof b); // prints: undefined undefined
Если magicImport(x)
делает что-то вроде
eval("var a = x.a; var b = x.b;");
это не очень помогает, поскольку область действия a
и b
будет ограничена внутри magicImport
.
И конечно же
eval("a = x.a; b = x.b;");
не годится, так как это изменит глобальный объект.
Есть ли способ eval
кода в более высоком объеме?
EDIT : Цель, если она не ясна, - создать функцию, которая может импортировать содержимое пространства имен без загрязнения глобальной области и без необходимости помещать эти импортированные объекты новый контейнерный объект.