Динамически получать глобальную переменную по строке имени в JavaScript
<script>
//in one script
var someVarName_10 = 20;
</script>
Я хочу получить доступ к этой переменной из другого script по имени переменной. С объектом window его просто, возможно ли с локальной переменной?
Я имею в виду доступ к этому var с помощью кода следующим образом:
<script>
alert(all_vars['someVar' + 'Name' + num]);
</script>
Ответы
Ответ 1
Вы хотите сделать что-то вроде этого?
<script>
//in one script
var someVarName_10 = 20;
alert(window["someVarName_10"]); //alert 20
</script>
Обновить: потому что OP отредактировал вопрос.
<script>
num=10;
alert(window['someVar' + 'Name_' + num]); //alert 20
</script>
Ответ 2
Я заметил, что все сообщают о создании глобального var, что приведет к утечке переменных в глобальное пространство имен.
Когда вы динамически создаете классные имена или просто переменные, легко сохранить em local:
this['className'] = 123;
или
this['varName'] = 123;
Расстояние между именами будет выглядеть так:
vars = {};
vars['varName'] = 123;
vars.varName // 123
Ответ 3
<script>
var someVarName_10 = 20;
var num = 10;
alert(eval('someVar' + 'Name_' + num)); //alert 20
</script>
Ответ 4
ну, для цели отладки, вы можете сделать что-то вроде этого. Я использую его во время разработки классов, где некоторые переменные должны оставаться частными (var). эта работа даже в локальной переменной (и глобальном проклятии)
function MYCLASS(){
var a=1, b=2, c=3;
this.public = "variable";
this.debug = function(sVar){
return eval(sVar);
}
}
var myThing = new MYCLASS();
myThing.debug('a') //return 1
myThing.debug('b') //return 2
myThing.debug('c') //return 3
Ответ 5
Если это то, что вы сказали:
<script type="text/javascript">
var hello = 'test';
</script>
<script type="text/javascript">
alert (hello);
</script>
Это работает, потому что script, наконец, доступен для документа, и вы можете получить доступ к своим vars.