Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.09.2011, 17:21
Интересующийся
Отправить личное сообщение для Ghaniball Посмотреть профиль Найти все сообщения от Ghaniball
 
Регистрация: 02.09.2011
Сообщений: 11

Как передать в функцию значение а не ссылку на переменную?
Введение:

Есть объект mnuctx, из который создаётся другой объект по схеме {"значение" : function(){exec(...)}}

Я делаю так
var mnuctx = xxxxx//не важно
var popupMenuArray = new Object
for (var j = 0; j < mnuctx.length; j++)
{
popupMenuArray[mnuctx[j].text] = function(){execCtxMenu(mnuctx[j], _jwEspRapporti, response_asset)}
}

В конец цикла у всех ключей одинаковые значения(последней итерации)
Внимание вопрос:
Как сделать чтобы передать не j(mnuctx[j]) а значение j(mnuctx[0], mnuctx[1], mnuctx[2],...)?
Ответить с цитированием
  #2 (permalink)  
Старый 02.09.2011, 17:31
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Классический пример на замыкания.
Ответить с цитированием
  #3 (permalink)  
Старый 02.09.2011, 17:54
Интересующийся
Отправить личное сообщение для Ghaniball Посмотреть профиль Найти все сообщения от Ghaniball
 
Регистрация: 02.09.2011
Сообщений: 11

Спасибо! А как мне всё это в вышеупомянутом примере внедрить?
Ответить с цитированием
  #4 (permalink)  
Старый 02.09.2011, 18:03
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Это твоя ситуация:
var obj = [], i;
for (i = 0; i < 5; i++) {
    obj.push(function() {
        alert(i);
    });
}

Как надо:
var obj = [], i;
for (i = 0; i < 5; i++) {
    (function(index) {
        obj.push(function() {
           alert(index);
        });
    })(i)
}
Ответить с цитированием
  #5 (permalink)  
Старый 02.09.2011, 18:24
Интересующийся
Отправить личное сообщение для Ghaniball Посмотреть профиль Найти все сообщения от Ghaniball
 
Регистрация: 02.09.2011
Сообщений: 11

Всё ещё разбираюсь...

Но думаю, я на правильном пути.

Спасибо большое! С утра голову ломаю! : )


Сделал!!!!!!
var popupMenuArray = new Object
for (var j = 0; j < mnuctx.length; j++)
{
	(function(obj){
		popupMenuArray[obj.text] = function(){execCtxMenu(obj,...)}
	})(mnuctx[j])
}


Аж, плакать хочется. Так легко и просто!

Последний раз редактировалось Ghaniball, 02.09.2011 в 18:37. Причина: Решил задачу!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? DeUre Общие вопросы Javascript 14 17.12.2013 16:37
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11