JavaScript objekti
Objekat je kombinacija promenljivih i funkcija. Zamislite da postoji promenljiva koja u sebi sadrži potpromenljive, a kao dodatak i funkcije. Jedna od najvažnijih mogućnosti programiranja sa objektima je što i te "potpromenljive" takođe mogu da budu objekti. Suštinski, objekat je jedna "budža" podataka i programa koji rade sa tim podacima.
Promenljive koje pripadaju objektu nazivaju se svojstva (properties), a funkcije objekta nazivaju se metodi (methods).
U JavaScriptu se može programirati objektno-orijentisano, makar u najvažnijim aspektima, ali time ćemo se baviti u posebnom odeljku. Trenutno nas zanima kako da koristimo već gotove objekte. JavaScript ima neke već ugrađene objekte, a u web programiranju, elementima stranice pristupamo preko objekata koje nam obezbeđuje web čitač.
Bilo kom elementu objekta se pristupa tako što navedmo objekat i onda svojstvo ili metod, odvojen tačkom. Svojstvo objekta se koristi kao i bilo koja druga promenljiva.
objekat.svojstvo = vrednost;
Metode objekta koristimo kao i bilo koje druge funkcije.
objekat.metod();
Primer
Svaka string promenljiva (znači promenljiva koja sadrži tekst), takođe se može koristiti i kao string objekat.
var tekst = "JavaScript ima objekte";
var x = tekst.length; // duzina stringa
var promena = tekst.toUpperCase(); // string pretvoren u velika slova
window.alert("Duzina stringa je " + x);
console.log(promena);
alert("Window je toliko vazan da cak i ne mora da se navede.");
U ovom primeru smo pozvali svojstvo length koje sadrži dužinu stringa (u karakterima), i metod toUpperCase(), koji na osnovu početnog stringa kreira novi string ali sa svim velikim slovima.
U primerima često prikazujemo rezultate pozivajući metod log() objekta console. Takođe koristimo i alert(), metod koji pripada objektu window. Objekti console i window ne pripadaju JavaScriptu, već DOM-u (Document Object Model), tj. predstavljaju objekte koje web čitač "pruža" JavaScriptu.
Inače, objekat window je toliko značajan (predstavlja sam web čitač), da čak ne moramo ni da ga navedemo kako bismo koristili njegove metode i svojstva.
Podobjekti
Jedan od glavnih koncepata objektnog programiranja je kompozicija. To je u stvari mogućnost da objekat sadrži svojstva koja su takođe objekti. Ovakva svojstva efektivno predstavljaju podobjekte nekog objekta.
objekat.podobjekat.svojstvo
objekat.podobjekat.metod()
Primer korišćenja podobjekta
Svaki HTML element poseduje poseban podobjekat style koji u sebi sadrži veliki broj svojstava vezanih za CSS prikaz tog elementa.
var pasus = document.getElementById("prvi"); // negde u HTML-u postoji <p id="prvi">...
pasus.style.color = "#900"; // postavljamo boju teksta
pasus.style.borderWidth = "1px"; // postavljamo debljinu okvira
Najpre smo "pozvali" element iz HTML koda, pomoću metoda getElementById() objekta document (ovaj objekat je u stvari podobjekat objekta window i predstavlja samu HTML stranicu). Ovaj elemenat može biti bilo koji (ne mora da znači da je pasus), pozivamo ga prema parametru id.
Na taj način smo "vezali" HTML elemenat sa promenljivom pasus, koja u stvari sada predstavlja referencu na objekat. Preko te reference lako pristupamo svojstima i metodima objekta.
U ovom slučaju, koristimo svojstvo style koje je u stvari podobjekat HTML elementa i koji sadrži veliki broj svaojstava koja odgovaraju CSS atributima. Na ovaj način menjamo CSS formatiranje elementa direktno iz JavaScripta.
Refernca na podobjekat
Verovatno se pitate da li je moguće "izvući" i podobjekat nekog objekta u referencu (promenljivu). Naravno da je moguće - pogledajte isti primer od malopre, ali kada napravimo referencu na sam podobjekat style.
var stil = document.getElementById("prvi").style; // podobjekat style HTML elementa "prvi"
stil.color = "#900"; // boja teksta
stil.borderWidth = "1px"; // debljina okvira
Dakle, prvo "izvlačimo" HTML elemenat sa id parametrom "prvi", i onda iz njega pozivamo svojstvo (podobjekat) style, koji onda adresira referenca (promenljiva) stil. Kada radimo sa objektima pogrečno je reći "smeštamo objekat u promenljivu", pošto takva promenljiva postaje referenca, a referenca samo pokazuje na objekat koji se nalazi "tamo negde".
Posle toga normalno koristimo svojstva objekta.