Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tablica asocjacyjna w JavaScript
Martio
post
Post #1





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


Czy jest możliwe używanie tablic asocjacyjnych w JavaScript? Jeżeli tak to w jaki sposób?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


http://www.mojavelinux.com/articles/javascript_hashes.html


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Martio
post
Post #3





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


Dzięki. A przy tworzeniu obiektów tzw. literałowo (w książce jest takie określenie), tworzenie tablic ascocjacyjnych nie działa sad.gif Proszę zobaczyć:

  1. var test = {
  2. tablica: new Array();
  3. tablica['pierwszy']: "to jest pierwsza pozycja",
  4. tablica['druga']: "to jest druga pozycja",
  5.  
  6. pokaz: function() {
  7. alert(test.tablica['pierwszy']);
  8. }
  9. }
  10.  
  11. tablica.test();


Pojawia się błąd: "Missing: after property id" i wskazuje na nawiaz klamrowy za nazwa zmiennej tablica

Ten post edytował Martio 31.10.2006, 18:00:54
Go to the top of the page
+Quote Post
mariuszn3
post
Post #4





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

Ostrzeżenie: (0%)
-----


Nie ma tablic assocjacyjnych w javascript.. są tylko numerowane, możesz wykorzystywać obiekty jako tablice associacyjne. Tak więc jak zadeklarujesz coś jako Array() to jest to tablica numeryczna nie asocjacyjna..
Możesz natomiast zrobić tak:
Kod
var test = {
    tablica: {
        "pierwszy": "to jest pierwsza pozycja",
        "drugi": "to jest druga pozycja"
    },
    pokaz: function() {
        alert(test.tablica['pierwszy']);
    }
}
Go to the top of the page
+Quote Post
jarrod
post
Post #5





Grupa: Zarejestrowani
Postów: 312
Pomógł: 9
Dołączył: 14.10.2006
Skąd: warszawa

Ostrzeżenie: (0%)
-----


to dlaczego mi to działa? snitch.gif

  1. var vals = new Array();
  2. vals['imie'] = getObj( 'imie' ).value;
  3. vals['nazwisko'] = getObj( 'nazwisko' ).value;
  4. vals['login'] = getObj( 'login' ).value;
  5. vals['pass'] = getObj( 'pass' ).value;
  6. vals['email'] = getObj( 'email' ).value;
  7. vals['telefon'] = getObj( 'telefon' ).value;
Go to the top of the page
+Quote Post
mariuszn3
post
Post #6





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

Ostrzeżenie: (0%)
-----


jarrod, bo tablica jest również obiektem.. to co robisz to tylko dodawnie właściwości do obiektu.. zresztą zobacz ile Twoja tablica ma elementów (vals.length) po dodaniu tych właściwości, to powinno Ci wiele wyjaśnić smile.gif
Go to the top of the page
+Quote Post
Martio
post
Post #7





Grupa: Zablokowani
Postów: 167
Pomógł: 2
Dołączył: 15.02.2004

Ostrzeżenie: (30%)
XX---


Cytat(mariuszn3 @ 31.10.2006, 22:20:50 ) *
Nie ma tablic assocjacyjnych w javascript.. są tylko numerowane, możesz wykorzystywać obiekty jako tablice associacyjne. Tak więc jak zadeklarujesz coś jako Array() to jest to tablica numeryczna nie asocjacyjna..
Możesz natomiast zrobić tak:
Kod
var test = {
    tablica: {
        "pierwszy": "to jest pierwsza pozycja",
        "drugi": "to jest druga pozycja"
    },
    pokaz: function() {
        alert(test.tablica['pierwszy']);
    }
}


Odwołujesz się poprzez test.tablica['pierwszy']. Czy "test" to jest nazwa obiektu, serii obiektów, a może klasy? Jak ten zestaw obiektów się fachowo nazywa? Dlaczego nie w każdym przypadku można odwołać się poprzez this? W niektórych skryptach działa, innymi nie.
Go to the top of the page
+Quote Post
mariuszn3
post
Post #8





Grupa: Zarejestrowani
Postów: 352
Pomógł: 0
Dołączył: 22.01.2006

Ostrzeżenie: (0%)
-----


'test' jest obiektem, jedną i jedyną jego możliwą instancją przy takim zapisie.. w definicji właściwości 'pokaz', która jest funkcją, kopiowałem Twój zapis ale mogłem napisać 'this.tablica['pierwszy']' i też by zadziałało.
Tak naprawdę w javascript nie ma klas, można utwożyć natomiast jakby szablon obiektu (w działaniu przypominający klasę) budując funkcję, która będzie konstruktorem obiektu i dodając właściwości poprzez dodawanie ich do prototypu konstruktora.
Świetny artykuł na ten temat został nie dawno napisany:
http://www.digital-web.com/articles/objectifying_javascript/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 06:10