Показать сообщение отдельно
  #2 (permalink)  
Старый 06.07.2014, 16:28
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от jeka123
присвоение идет для всех элементов массива.Почему?
Потому что все элементы массивов ссылкаются на один и тот же объект. Нужно сделать, чтобы это были разные объекты. Вариантов куча:
1.
pl_list_1[i][j] = new Sea;
        pl_list_2[i][j] = new Sea;

function Sea() {
    this.chip = false;
    this.opened = false;
    this.msg = 'Промазал';
}

2
pl_list_1[i][j] = getSea();
        pl_list_2[i][j] = getSea();

function getSea() {
    return {
        chip :false,
        opened:false,
        msg:'Промазал'
    };
}

3.
var sea = {
   chip :false,
   opened:false,
   msg:'Промазал'
};

        pl_list_1[i][j] = Object.create(sea);
        pl_list_2[i][j] = Object.create(sea);

4.
pl_list_1[i][j] = {
            chip :false,
            opened:false,
            msg:'Промазал'
        };
        pl_list_2[i][j] = {
            chip :false,
            opened:false,
            msg:'Промазал'
        };
Все эти варианты, на первый взгляд, работают одинаково. Но все они разные и каждый имеет свои особенности. Такие дела.
Ответить с цитированием