Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.03.2016, 10:00
Новичок на форуме
Отправить личное сообщение для kva212 Посмотреть профиль Найти все сообщения от kva212
 
Регистрация: 07.03.2016
Сообщений: 6

Пропадает свойство обьекта
Здравствуйте.
Проблема вроде бы элементарная. Попал в ступор, помогите....
------
Есть объект tree, в котором есть свойство person - массив объектов.
Вот кусок кода:

console.log(tree.person[id]);
console.log(tree.person[id].posX);

(строки идут подряд).
первая строка выводит объект, в котором ЕСТЬ свойство posX
вторая вводит undifined

помогите, пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2016, 10:23
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

kva212,
Если у тебя свойство posX для объекта id не определено, то консоль правильно выводит undefined.
Ответить с цитированием
  #3 (permalink)  
Старый 07.03.2016, 11:19
Новичок на форуме
Отправить личное сообщение для kva212 Посмотреть профиль Найти все сообщения от kva212
 
Регистрация: 07.03.2016
Сообщений: 6

Как так не определено???
если я в предыдущей строке вывожу объект, и в нем есть это свойство, с правильным значением.
а в этой строке обращаюсь к свойству - а его якобы нет.

может я чего-то не понимаю в объектах, но как такое может быть?
все другие свойства есть.
Ответить с цитированием
  #4 (permalink)  
Старый 07.03.2016, 11:41
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

kva212,
покажи весь объект tree
Ответить с цитированием
  #5 (permalink)  
Старый 07.03.2016, 12:10
Новичок на форуме
Отправить личное сообщение для kva212 Посмотреть профиль Найти все сообщения от kva212
 
Регистрация: 07.03.2016
Сообщений: 6

{
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
Ответить с цитированием
  #6 (permalink)  
Старый 07.03.2016, 12:17
Новичок на форуме
Отправить личное сообщение для kva212 Посмотреть профиль Найти все сообщения от kva212
 
Регистрация: 07.03.2016
Сообщений: 6

пробовал перебирать все свойства, все есть, кроме posX и posY
они отличаются тем, что имеют числовой тип, и определяются позже в скрипте.
при загрузке присваиваются все person[i] (они НЕ содержат posX)
потом по нажатии кнопки присваиваются person[i].posX
но у меня в голову не влазит, как это может повлиять на результат и почему если отобразить весь объект - свойство есть, если конкретно это свойство - его нет.
Ответить с цитированием
  #7 (permalink)  
Старый 07.03.2016, 12:21
Новичок на форуме
Отправить личное сообщение для kva212 Посмотреть профиль Найти все сообщения от kva212
 
Регистрация: 07.03.2016
Сообщений: 6

весь объект
{
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
}
Ответить с цитированием
  #8 (permalink)  
Старый 07.03.2016, 16:32
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

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" такого свойства)
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2016, 00:16
Новичок на форуме
Отправить личное сообщение для kva212 Посмотреть профиль Найти все сообщения от kva212
 
Регистрация: 07.03.2016
Сообщений: 6

Вы немного неверно поняли, но скрипт уже переделан, проблема исчезла.
Спасибо огромное за помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить свойство обьекта, зная к нему путь? Sektoid Общие вопросы Javascript 7 21.11.2014 20:16
CSS свойство "content" без before и after. ruslan_mart (X)HTML/CSS 5 01.10.2013 19:28
Свойства объекта, методы и this. Почему свойство вызывается с () ? jsuse Общие вопросы Javascript 2 04.11.2011 20:39
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
если (свойство css == 2) свойство css = 1; funkypublic Events/DOM/Window 1 09.06.2010 17:39