Двумерный массив обьектов
ребят такая проблема хочу присвоить значение обьекту в двухмерном массиве
chip = true но присвоение идет для всех элементов массива.Почему? var n = 4, m = 4,player = 2; var pl_list_1 = []; var pl_list_2 = []; var sea = { chip :false, opened:false, msg:'Промазал' }; for (var i = 0; i < m; i++){ pl_list_1[i] = []; pl_list_2[i] = []; for (var j = 0; j < n; j++){ pl_list_1[i][j] = sea; pl_list_2[i][j] = sea; }} for (var z = 1; z <= player; z++){ do { var x = prompt(z+' Игрок\nВведите ваши координты кораблей'); var y = prompt(z+' Игрок\nВведите ваши координты кораблей'); message = confirm(z +' Игрок вы продолжаете ввод?'); putship(x,y,z); } while (message ===true); } //console.log(pl_list_1); //console.log(pl_list_2); alert('Война началась!'); console.log(pl_list_1); function putship(x,y){ alert(x);alert(y); pl_list_1[x][y].chip = true; } |
Цитата:
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:'Промазал' };Все эти варианты, на первый взгляд, работают одинаково. Но все они разные и каждый имеет свои особенности. Такие дела. |
оооо Спасибо блин а я не знал я думал что просто если обьект sea присвоить будет все норм.Спасибо большое!!
|
Часовой пояс GMT +3, время: 07:03. |