JavaScript, обратитесь к переменной с помощью строки, содержащей ее имя?

Только, когда у Вас есть на той поздней стадии некоторый независимый политик (почти 0%-е взаимодействие с другими частями проекта) задачи, которыми кто-либо не занимается все же, и можно навлечь команду кто-то, который является специалистом в том домене. Добавление члена команды должно минимизировать разрушение для остальной части команды.

19
задан outis 28 May 2011 в 07:05
поделиться

6 ответов

Для этого вы можете использовать eval , хотя я стараюсь избегать подобных вещей любой ценой.

alert(eval(someString));

Лучший способ, если вам это нужно для этого нужно использовать хеш-таблицу.

var stuff = { myText: 'hello world!' };
var someString = 'myText';
alert( stuff[someString] );
45
ответ дан 30 November 2019 в 01:54
поделиться

Если эта переменная находится в глобальной области, вы можете использовать нотацию скобок для глобального объекта:

var myText = 'hello world!';
var someString = 'myText';

alert(window[someString]);
29
ответ дан 30 November 2019 в 01:54
поделиться

Вы можете сделать это с помощью eval :

var myText = 'hello world!';
var someString = 'myText';

eval('var theTextInMyText = ' + someString + ';');

alert(theTextInMyText);

Желание сделать это вообще обычно является "запахом кода". Возможно, есть более изящный способ ...

1
ответ дан 30 November 2019 в 01:54
поделиться
eval("alert(" + someString + ");");

подойдет.

1
ответ дан 30 November 2019 в 01:54
поделиться

eval сделает это:

var myText = 'hello world!!';
var someString = eval('myText');

document.getElementById('hello').innerHTML = someString;

Как продемонстрировано здесь .

1
ответ дан 30 November 2019 в 01:54
поделиться

Предполагая это на верхнем уровне, window [someString] === "hello world!" .

1
ответ дан 30 November 2019 в 01:54
поделиться