Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tablica obiektów w tablicy innych obiektów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
radziopoke
Choć nie którym dużo tytuł nie powie podam przykład po czym wyjaśnię mój problem. Oto kod JavaScript
  1. function object(x, y)
  2. {
  3. this.fire = new Array();
  4. this.x = x;
  5. this.y = y;
  6. }
  7. function object2(x, y)
  8. {
  9. this.x=x;
  10. this.y=y;
  11. }
  12.  
  13. var a = new Array();
  14. a[0] = new object(10, 15);
  15. for(var i=0; i<5; i++)
  16. {
  17. a.fire[i] = new object2(0,0);
  18. }
  19. document.write(a[0].fire[0].x);


Po kolei. Tworze tablicę obiektów 'object' o nazwie 'a'.
Jak widać a[0] to nasz nowy object. posiada on 3 zmienne z czego jedna z nich dokładnie 'fire' jest tablicą. Będzie to tablica kolejnych obiektów co można zauważyć w pętli for. Obiekty są tworzone bez problemu. kłopot jest gdy chcemy odczytać wartość x lub y jednego z obiektów fire obiektu a który jest tablicą. Google chrom sypie błędem:
Cytat
Uncaught TypeError: Cannot read property 'fire' of undefined


Lecz za pomocą Watch Expression, podglądając zmienną a bez problemu widzimy że obiekt został stworzony poprawnie. Wygląda to mniej więcej tak:
Kod
a:Array[1]
0: object
  fire:Array[5]
   0: object2
    x:0
    y:0
   1: object2
    x:0
    y:0
   2: object2
    x:0
    y:0
   3: object2
    x:0
    y:0
   4: object2
    x:0
    y:0
  x:10
  y:15

czyli po tym widać, że wszystko zostało stworzone tak jak chciałem tylko jak odczytać zmienną x lub y obiektu fire.

Zauważyłem, że gdyby zmienna 'a' nie byłaby tablicą wszystko odczytuje bez problemu. Ale potrzebuję by 'a' była tablicą obiektów tak samo jak zawarta w niej zmienna fire.

Jest to tylko przykład bardziej rozwiniętego kodu. Który tez nie działa.
tolomei
Witaj.

Wszystko działa tylko trzeba się sqpić tongue.gif

W linii 17 masz błąd. Powinieneś napisać

Kod
a[0].fire[i] = new object2(0,0);


Pozdrawiam smile.gif
radziopoke
Jak już pisałem kod napisany przeze mnie wcześniej był testowy. Masz rację gdyby się to poprawiło wszystko by działało z tym kodem. Lecz w moim prawdziwym kodzie ten błąd powstał gdyż nie zauważyłem, że w pewnej funkcji użyłem zmienną lokalną o nazwie takiej samej jak główny obiekt. Przez co nie mogłem odczytać w tej funkcji danych tej tablicy.
Ale dziękuje za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.