Как передать в функцию значение а не ссылку на переменную?
Введение:
Есть объект 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],...)? |
Классический пример на замыкания.
|
Спасибо! А как мне всё это в вышеупомянутом примере внедрить?
|
Это твоя ситуация:
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) } |
Всё ещё разбираюсь...
Но думаю, я на правильном пути. Спасибо большое! С утра голову ломаю! : ) Сделал!!!!!! var popupMenuArray = new Object for (var j = 0; j < mnuctx.length; j++) { (function(obj){ popupMenuArray[obj.text] = function(){execCtxMenu(obj,...)} })(mnuctx[j]) } Аж, плакать хочется. Так легко и просто! |
Часовой пояс GMT +3, время: 19:17. |