Как передать в функцию значение а не ссылку на переменную?
Введение:
Есть объект 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, время: 04:07. |