Двумерный массив обьектов
ребят такая проблема хочу присвоить значение обьекту в двухмерном массиве
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, время: 11:36. |