Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.01.2010, 03:06
Аватар для mff
mff mff вне форума
Аспирант
Отправить личное сообщение для mff Посмотреть профиль Найти все сообщения от mff
 
Регистрация: 28.01.2010
Сообщений: 31

Конкатенация имен переменных
Помогите с кодом:
var p_10_pos=1;
...p_pos2=0;num=10;...
eval('p_'+num+'_pos') = p_pos2;


Почему не работает?
Ответить с цитированием
  #2 (permalink)  
Старый 28.01.2010, 03:54
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Потому что "Метод eval возвращает значение последнего вычисленного выражения".
И ваша запись эквивалентна
1 = p_pos2

Читайте Справочник.
Ответить с цитированием
  #3 (permalink)  
Старый 28.01.2010, 04:55
Аватар для mff
mff mff вне форума
Аспирант
Отправить личное сообщение для mff Посмотреть профиль Найти все сообщения от mff
 
Регистрация: 28.01.2010
Сообщений: 31

спасибо, а как тогда сделать правильно конкатенацию с именем переменной?
Ответить с цитированием
  #4 (permalink)  
Старый 28.01.2010, 05:07
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Если это глобальная переменная, то к ней есть доступ через свойство окна
p_10_pos === window.p_10_pos === window["p_10_pos"] === window["p_"+num+"_pos"]
Ответить с цитированием
  #5 (permalink)  
Старый 28.01.2010, 07:55
Аватар для mff
mff mff вне форума
Аспирант
Отправить личное сообщение для mff Посмотреть профиль Найти все сообщения от mff
 
Регистрация: 28.01.2010
Сообщений: 31

Сообщение от Мараторий Посмотреть сообщение
window["p_"+num+"_pos"]
Большое спасибо Мараторий!
Ответить с цитированием
  #6 (permalink)  
Старый 28.01.2010, 08:13
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

А если локальная, то
eval('p_'+num+'_pos = p_pos2');
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2010, 12:46
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от B@rmaley.e><e
А если локальная, то
eval
Зависит от реализаций. В Rhino, например, можно получить доступ к объекту активации: http://javascript.ru/blog/Dmitry-A.-...voystvo-parent

Но, если говорить о браузерной среде, то, кроссбраузерно - eval.
__________________
Тонкости ECMAScript
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка текущих переменных формы в ссылке user1980 Общие вопросы Javascript 2 26.10.2009 17:28
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
Проблемы с приемом переменных через Java Script Kaaron jQuery 2 08.07.2009 03:27
Генерация имен Добрый Человек Общие вопросы Javascript 8 23.03.2009 11:59
Передача переменных между файлами Dekker8 Events/DOM/Window 1 22.09.2008 01:53