Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tablica asocjacyjna w JavaScript
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Martio
Czy jest możliwe używanie tablic asocjacyjnych w JavaScript? Jeżeli tak to w jaki sposób?
Martio
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
mariuszn3
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']);
    }
}
jarrod
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;
mariuszn3
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
Martio
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.
mariuszn3
'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/
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.