Просто из любопытства:
В контексте веб-браузера можно добавить свойство к объекту окна, что делает его глобальным, например:
function a(){
window.b="c";
}
//edit
a();
console.log(b);
Мне было интересно, можно ли установить переменные аналогичным образом, но только в текущей области видимости, например:
function a(){
scope.b="c";
console.log(b);
}
//but "b" is not available here.
Возможный вариант использования
var objectOne=new(function(){
this.a="e";
this.b="f";
this.c="g";
})();
(function(){
var importlist=["a","b"];
var scopehere=scope;
for(var importitm of importlist){
scopehere[importitm]=objectOne[importitm];
}
console.log(a,b);
})();
Таким образом, в этом случае было бы возможно «импортировать» многие переменные последовательно, чтобы они были доступны внутри объекта как переменные вместо использования «this» (например, когда вы экспортируете их в окно), но в этом случае они являются частными.
В частности, если вы используете загруженный html-скрипт и хотите, чтобы его свойства были доступны в области видимости. Примеры: paper.js, three.js. Переход свойства за свойством был бы немного громоздким, но это могло бы быть сделано автоматически, если бы существовал такой объект "scope".
Я знаю, что вы можете обойтись разными способами, и, возможно, в этом нет такой существенной выгоды. Этот вопрос просто из любопытства.
Изменения в этом сообщении:
добавлен вызов функции ´a () ´, как указано в kylestephens.