Массив объектов
Доброго времени суток! Уважаемые Форумчане!
У меня такая задача: Мне необходимо создать массив объектов. var mas_tree = []; Массив инициализирован. Массив будет хранить в каждой ячейки - объект. Объект имеет вид:
var tree = {
tree_id:'',
tree_type:'',
tree_quality:'',
tree_diametr:''
};
Теперь мне необходимо собрать информацию. Собрали! По консолю проверил. Длалее необходимо написать функцию, которая будет заносить этот объект в массив. Функция вызывается по клику на объекте(div). Код:
<div id="button" onclick="data_tree();">Добавить</div>
function data_tree(){
tree.tree_id = id_tree;
tree.tree_type = insert_t_t;
tree.tree_quality = insert_t_q;
tree.tree_diametr = diametr;
mas_tree[id_tree-1] = tree;
}
Теперь вкусненькое. В каждую ячейку массива заносятся элементы(Объект). Но, все записи затираются последней. Т.е., записали 6 объектов, получилось 6 ячеек(0-5). Все записи идентичны 5 ячейки. Почему?) За ранее спасибо. |
doox911,
var mas_tree = [];
var tree = {
tree_id:''
};
var n = 0;
function data_tree(){
tree.tree_id = n;
mas_tree[n++] = tree;
}
data_tree()
data_tree()
alert(JSON.stringify(mas_tree))
почувствуйте разницу
var mas_tree = [];
var n = 0;
function data_tree() {
var tree = {
tree_id: ''
};
tree.tree_id = n;
mas_tree[n++] = tree;
}
data_tree()
data_tree()
alert(JSON.stringify(mas_tree))
|
Цитата:
|
doox911,
потому что все ссылки в вашем случае ведут на один и тотже обьект - поэтому они одинаковое содержимое и показывают. во втором примере обьекты каждый раз разные(новые) поэтому и ссылки ведут на разные обьекты с разным содержимым |
Цитата:
С объектом ладно, хотя Я ж каждый раз нажимая на див присваиваю его полям разные значения. Но почему в массиве то затираются? Индексы ж меняются. Просто может Я вас не понимаю. Каждый раз(при вызове функции) индекс увеличивается на один. Как Я понимаю этот же объект, но с другими значениями в свойствах, записывается в ячейку. Или вот, мысля. Каждая новая ячейка хранит ссылку на объект, а не сам объект? |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 17:11. |