Пропадает свойство обьекта
Здравствуйте.
Проблема вроде бы элементарная. Попал в ступор, помогите.... ------ Есть объект tree, в котором есть свойство person - массив объектов. Вот кусок кода: console.log(tree.person[id]); console.log(tree.person[id].posX); (строки идут подряд). первая строка выводит объект, в котором ЕСТЬ свойство posX вторая вводит undifined помогите, пожалуйста. |
kva212,
Если у тебя свойство posX для объекта id не определено, то консоль правильно выводит undefined. |
Как так не определено???
если я в предыдущей строке вывожу объект, и в нем есть это свойство, с правильным значением. а в этой строке обращаюсь к свойству - а его якобы нет. может я чего-то не понимаю в объектах, но как такое может быть? все другие свойства есть. |
kva212,
покажи весь объект tree |
{
birstday: "0000-00-00" dead: "0" deadday: "0000-00-00" id: "138" name: "Таня" photo: "0.jpg" posX: 0 posY: 110 sex: "women" showchild: false tree: "9" x: "0" y: "0" } это выводит строка console.log(tree.person[id]); строка console.log(tree.person[id].posX); выводит undefined |
пробовал перебирать все свойства, все есть, кроме posX и posY
они отличаются тем, что имеют числовой тип, и определяются позже в скрипте. при загрузке присваиваются все person[i] (они НЕ содержат posX) потом по нажатии кнопки присваиваются person[i].posX но у меня в голову не влазит, как это может повлиять на результат и почему если отобразить весь объект - свойство есть, если конкретно это свойство - его нет. |
весь объект
{ BW: 5 DH: 20 DX: 8 H: 90 R: 16 TH: 4 W: 80 is_data_changed: false links: Array[96] mousedown: false pathcolor: "red" person: Object prevX: 593 prevY: 424 state: Object __proto__: Object } |
kva212,
Короче если я правильно осознал, что к чему относится, то вердикт такой 1) Делаю tree var tree ={ BW: 5 DH: 20 DX: 8 H: 90 R: 16 TH: 4 W: 80 is_data_changed: false links: Array[96] mousedown: false pathcolor: "red" prevX: 593 prevY: 424 state: "bla-bla" } 2) Добавляю person ( я знаю что оно добавлено. Это для пошаговости) tree.person = { birstday: "0000-00-00", dead: "0", deadday: "0000-00-00", id: "138", name: "Таня", photo: "0.jpg", posX: 0, posY: 110, sex: "women", showchild: false, tree: "9", x: "0", y: "0", }; 3) Сейчас я запрошу у свойства person свойство id (как ты делаешь) tree.person['id']; "138" 4) А теперь я запрошу у значения "138" (ибо оно есть person['id']) значение свойства posX tree.person['id'].posX; undefined; 5) Почему так? Потому что ты запрашиваешь свойство posX у значения свойства id объекта person !!!! Поэтому оно и undefined. Потому что нет у строки "138" такого свойства) |
Вы немного неверно поняли, но скрипт уже переделан, проблема исчезла.
Спасибо огромное за помощь. |
Часовой пояс GMT +3, время: 19:18. |