Referentni tipovi

Tipovi podataka

U JavaScriptu postoji nekoliko tipova podataka. Formalni tipovi podataka su:

String – niz znakova unutar navodnika

Number – bilo koji broj koji nije pod navodnicima

Boolean – true/false – logičko istinito ili neistinito

Null - lišeno vrednosti, nepoznata vrednost

Object – obuvata sva svojstva i metode koji pripadaju objektu

Array - niz koji skladišti više vrednosti

Date - objekat koji radi sa datumom i vremenom

Function – definicija funkcije

Java Script varijable mogu da sadrže različite tipove podatake koje smo gore naveli. Među njima, primitivni tipovi podataka su String, Number, Boolean.

String

String je niz karaktera sačinjen od nula ili više znakova. String može biti bilo koji tekst koji se piše između navodnika. Navodnici mogu biti jednostruki ili dvostruki.

Npr:

var ime = “Marko Marković”;
//korišćenje dvostrukih navodnika

var ime = ‘Marko Marković;
//korišćenje jednostrukih navodnika

Takođe, često se javlja potreba da se koriste navodnici unutar stringa. To se može uraditi korišćenjem escape karaktera (kose crte \ ).

Npr:

var tekst = “Njegovo ime je \”Marko Marković\”.”;

U stringovima je dozvoljeno koristiti sledeće specijalne karaktere:

• \b = pomeraj za jedno mesto ulevo (backspace)

• \f = pomeraj jedan red dole (form feed)

• \n = na početak novog reda (new line character)

• \r = return (carriage return)

• \t = tabulator (tab).

JavaScript je slabo tipiziran jezik. Tipovi podataka će biti automatski konvertovani zavisno od mesta njihove upotrebe u programu.

Tako, na primer možemo definisati i inicijalizovati sledeću promenljivu:

var promenjiva = 7;

a kasnije joj dodeliti neku drugu vrednost, odnosno možemo je predefinisati.

var promenljiva = “Java Script”;

Kada govorimo o kombinaciji broja i stringa, Java Script konvertuje broj u string.

Npr:

var primer = “Ovo je primer “ + 15;

ili

var primer = 13 + “primer”;

Za konverziju stringa u broj koriste se sledeće funkcije:

• EVAL – ocenjuje string i pretvara ga u broj ako je moguće

• parseINT – konvertuje string u Integer,ako je moguće

• parseFLOAT – konvertuje string u Float tip ,ako je moguće

Number

Celi brojevi u JavaScriptu mogu biti predstavljeni u tri osnove:

u decimalnom (baza 10), u oktalnom (baza 8) i heksadecimalnom (baza 16) formatu.

Decimalni celi brojevi se predstavljaju kao niz cifara (0-9) bez vodeće nule.

Oktalni celi brojevi se predstavljaju kao niz cifara (0-7) predvođen sa nulom (“0”).

Heksadecimalni celi brojevi se predstavljaju kao niz cifara (0-9) i slova (a-f i A-F) predvođen sa nulom koju sledi slovo x (“0x” ili “0X”).

Primer prestavljanja celog broja deset (10) u tri brojna sistema:

• decimalnom: 10.

• oktalnom: 012.

• heksadecimalnom: 0xA.

Brojevi u pokretnom zarezu Brojevi u pokretnom zarezu imaju sledeće delove: decimalni ceo broj, decimalnu tačku (“.”), deo iza decimalnog zareza (decimalni ceo broj), eksponent (“e” ili “E”, praćen decimalnim celim brojem).

Primeri brojeva u pokretnom zarezu:

• 1.1234

• .1E23

• -1.1E12

• 2E-10

Infinity ( ili -Infinity) je vrednost koju će da vrati Java Script ako radimo sa brojevima koji su veći od najvećeg mogućeg broja. Deljenje sa nulom će da generiše Infinity vrednost.

var x = 2/0;

// x će imati vrednost Infinity

var x = -2/0
// x će imati vrednost –Infinity

Infinity je broj : typeOf Infinity će da vrati number.

typeOf Infinity; //vraća number

Boolean

Promenljive tipa Boolean mogu imati dve vrste vrednosti: true (tačno) ili false (netačno).

var x = true;

var y = false;

Boolean funkcija se može koristiti da utvrdimo da li je neki izraz tačan ili ne.

Boolean(10>9) //vraća true

Array objekat

Array objekat se koristi za čuvanje seta vrednosti u jednom imenu promenljive. Niz je kao i u drugim programskim jezicima uređena kolekcija podataka, međutim za razliku od drugih programskih jezika, JavaScript dozvoljava da se u jednom nizu nalaze podaci različitog tipa (zbog slabe tipiziranosti JavaScript-a). Svakom elementu niza dodeljuje se vrednost indeksa preko koga mu se može direktno pristupiti. Indeksiranje u nizu počinje od nule. Sledeća linija koda definiše objekat array koji je nazvan myArray:

var myArray = new Array;

Ključna reč new se koristi da bi se dinamički kreirao objekat tipa Array. On poziva konstruktor objekta Array() pri čemu se kreira novi objekat tipa Array. Veličina niza može biti prosleđena kao argument konstruktora.

var myArray = new Array(10);

U gornjem primeru je kreiran objekat tipa Array koji ima 10 elemenata. Postoje dva načina za dodavanje vrednosti nizu:

• moguće je dodati koliko god je potrebno vrednosti za definisanje promenljivih koje su potrebne

var mojakola=new Array();

mojakola[1]="Golf";
mojakola[2]="BMW";

• moguće je dodati ceo sadržaj za kontrolisanje

var mojakola=new Array("Golf", "BMW")

Pristup nizu

Moguće je obratiti se posebnom elementu u nizu, obraćajući se imenu niza i broju indeksa. Indeks počinje od 0.

document.write(mojakola[0]);

Kao rezultat ovog koda pojaviće se: "Golf".

Asocijativni nizovi

Asocijativni niz je niz koji umesto numeričkih vrednosti koristi stringove za indeksiranje vrednosti. Postoji asocijacija između indeksa i vrednosti sačuvane na toj lokaciji. Indeks se obično zove i key a dodeljena vrednost value. Ovi key/value parovi su uobičajen način za čuvanje i pristup podacima. U sledećem nizu drzave postoji asocijacija između vrednosti indeksa (skraćenice za državu) i sačuvane vrednosti (celog imena države). Za iteraciju kroz elemente ovakvog niza možemo da koristimo for petlju.

Asocijativni nizovi

Niz indeksiran stringovima

Rezultat ovog ovog JavaScripta je spisak skraćenica i celih naziva država.

Svojstva Array objekta

Objekat Array ima samo tri svojstva. Najčešće korišćeno svojstvo je length koji određuje broj elemenata niza, tj. njegovu dužinu.

Svojstvo Opis
constructor referencira konstruktor objekta Array
length vraca broj elemenata niza
prototype prosiruje definiciju niza dodajuci mu svojstva i metode

Sledi primer u kom je prikazana primena svojstava Array objekta.

Svojstva niza

Svojstva niza

Rezultat ovog JavaScripta će biti “Niz knjiga ima 3 elemenata”.

Metode Array objekta

Metoda Opis
concat() Dodaje elemente jednog niza drugom nizu
join() Spaja elemente niza odvojene separatorom i formira string
pop() Briše i vraća poslednji element niza
push() Dodaje elemente na kraj niza
reverse() Obrće raspored elemenata u nizu
shift() Briše i vraća prvi element niza
slice() Kreira novi niz od elemenata postojećeg niza
sort() Sortira niz po abedecnom ili numeričkom redosledu
splice() Uklanja i/ili zamenjuje elemente niza
toLocaleString() Vraća niz predstavljen stringom u lokalnom formatu
toString() Vraća niz predstavljen stringom
unshift() Dodaje elemente na početak niza

Tabela 10 Metode objekta Array

Concat() metoda

Metoda concat() dodaje elemente prosleđene kao argumente u postojeći niz i vraća novoformirani niz.

noviNiz = stariNiz.concat(new elementi);

Primer upotrebe:

concat() metode

Pop() metoda

Pop() metoda briše poslednji element niza i kao rezultat izvršavanja vraća taj skinuti element niza.

var poslednja_vrednost = mojNiz.pop();

Sledi primer upotrebe:

upotrebe pop() metode

Kao rezultat izvršavanja ovog programa dobićemo da originalni niz ima elemente: Ana, Dragan, Maja, da je skinut element Maja, a novi niz ima elemente Ana,Dragan.

Push() metoda

Metoda push() dodaje nove elemente na kraj niza, pri čemu se alocira potrebna memorija.

mojNiz.push(new elementi);

Primer upotrebe metode push():

Primena push metode

Kao rezultat izvršavanja gornjeg primera dobićemo ispisane elemente prvobitnog niza: Ana, Vlada, Dragan, Maja i dobićemo ispisane elemente novog niza: Ana, Vlada, Dragan, Maja, Sandra, Tanja.

Metode shift() i unshift()

Metoda shift() uklanja prvi element niza i kao rezultat vraća uklonjenu vrednost, dok unshift() metoda dodaje element na početak niza. Ove metode su kao pop() i push() sem što se odnose na početak niza a ne na njegov kraj.

Metoda slice()

Metoda slice() kopira elemente jednog niza u drugi i ima dva argumenta: prvi je broj koji predstavlja početni element od koga će krenuti kopiranje, a drugi element predstavlja poslednji element (on se ne uključuje). Pri tome treba imati u vidu da je prvi element niza na poziciji " 0". Pritom originalni niz ostaje nepromenjen.

var noviNiz = mojNiz.slice(indeks prvog elementa, indeks poslednjeg elementa);

Primer upotrebe metode slice():

slice() metoda Kao rezultat izvršavanja gornjeg programa dobićemo ispisane elemente prvog niza: Ana, Vlada, Dragan, Maja, Sandra, kao i elemente novog niza dobijenog korišćenjem slice metode: Dragan, Maja. Metoda splice() Metoda splice() uklanja određeni broj elemenata od neke startne pozicije i dozvoljava zamenu izbačenih elemenata novim. mojNiz.splice(indeks elementa, broj elemenata, [elementi zamene]); Primer upotrebe metode splice(): Primer splice metode

Kao rezultat izvršavanja gornjeg programa dobićemo ispisane elemente početnog niza: Ana, Vlada, Dragan, Maja, kao i ispisane elemente novog niza: Ana, Sandra, Tanja, Pera, Maja.

Objekat Date

Date objekti se koriste za rad sa datumom i vremenom. Postoji veliki broj metoda za dobijanje informacija vezanih za datum i vreme. Datum je zasnovan na UNIX-ovom datumu počev od 1.januara 1970. i ne podržava datume pre njega. S obzirom da se JavaScript izvršava u čitaču Date objekat vraća vreme i datum lokalnog računara, a ne servera. Ako vreme nije dobro podešeno na korisničkom računaru onda se ni vrednosti neće dobro prikazivati.

Primeri kreiranja Date objekta:

var Date = new Date();

// Konstruktor koji vraća Date objekat

var Date = new Date("July 4, 2004, 6:25:22");

var Date = new Date("July 4, 2004");

var Date = new Date(2004, 7, 4, 6, 25, 22);

var Date = new Date(2004, 7, 4);

var Date = new Date(Milliseconds);

Svojstva Date objekta

Objekat Date ima samo jedno svojstvo prototype.

Metode Date objekta

Date objekat ima veliki broj metoda. U tabeli su prikazane neke od metoda.

Metoda Opis
getDate Vraća dan u mesecu
getDay Vraća dan u nedelji
getFullYear Vraća godinu ispisanu sa sve 4 cifre
getHours Vraća sat u danu
getMonth Vraća broj meseca (Januar – 0)
getTime Vraća broj milisekundi počev od 1.januara 1970.
parse() Konvertuje string u date objekat
setDate(value) Postavlja datum u mesecu
setFullYear() Postavlja godinu
setHours() Postavlja sat u danu
setTime() Postavlja vreme od 1.januara 1970. u milisekundama
toString() Vraća string objekat koji predstavlja datum i vreme
Datum i vreme

Primer izvršenja gornjeg koda je:

Lokalno vreme: Mon Feb 29 23:00:31 UTC+0100 2016

Godina je 2016

Vreme je: 23:0:31

Vrednost lokalnog vremena će zavisiti od trenutka izvršavanja programa i biće prikazano vreme na klijentu.

Object type

Kreiranje objekata

Kreiranje objekta se odvija u dva koraka:

  1. Definisanje tipa objekta preko pisanja funkcije,
  2. Kreirajući instancu objekta sa new. Da bi definisali tip objekta moramo napisati funkciju koja određuje njegovo ime, njegove osobine i metode. Na primer, pretpostavimo da želimo da kreiramo tip objekta za studente. Neka se objekat zove student i neka ima osobine ime, srednje_ime, prezime i indeks. Da bi to uradili potrebno je da napišemo sledeću funkciju:

function student(ime, srednje_ime, prezime, indeks) { this.ime=ime; this.ime_roditelja = srednje_ime; this.prezime=prezime; this.Indeks=indeks; }

Sada možemo da kreiramo objekat student1 pozivajući funkciju student preko new:

student1=new student(“Pera”, “Petar”,”Perić”, ”2012/99”);

Objektu možemo da dodamo i metode. Recimo, funkcija prikaziProfil() koja ispisuje sve podatke o studentu:

function prikaziProfil() { document.write("Ime: " + this.ime + "
"); document.write("Srednje ime: " + this.ime_roditelja + "
"); document.write("Prezime: " + this.prezime + "
"); document.write("Indeks: " + this.Indeks + "
"); }

Sada ćemo ponovo napisati funkciju student() preko koje definišemo objekat.

function student(ime, srednje_ime, prezime, indeks) { this.ime=ime; this.ime_roditelja = srednje_ime; this.prezime=prezime; this.Indeks=indeks; this.prikaziProfil=prikaziProfil; }

Kada definišemo objekat student1, funkciji prikaziProfil() se pristupa preko:

student1.prikaziProfil();

Objekat može da ima svojstvo koje je i samo objekat. Na primer, objekat tipa student, može u sebe uključivati svojstva profesor i predmet, koja su i sama objekti. I tako redom.

Objektu Student možemo dodeliti svojstva pod nazivima ime, ime_roditelja, prezime i Indeks na sledeći način:

Student.ime=”Pera”; Student.ime_roditelja=”Petar”; Student.prezime=”Perić”; Student.Indeks=”100/99”;**

Ovo nije jedini način pristupa svojstvima objekta. Nizovi su skup vrednosti organizovan po brojevima kome je dodeljeno jedno ime promenljive. Osobine objekta i nizovi su u JavaScriptu direktno povezani, oni zapravo predstavljaju različit način pristupa istoj strukturi podataka. Tako, na primer, osobinama objekta Student možemo pristupiti i na sledeći način, potpuno ekvivalentan prethodnom primeru:

Student[”ime”]=”Pera”; Student[”ime_roditelja”]=”Petar”; Student[”prezime”]=”Perić”; Student[”Indeks”]=”100/99”;

Takođe je moguće prići svakoj od osobina niza i preko indeksa. Tako je potpuno ekvivalentno gornjim načinima ekvivalentan i pristup preko indeksa:

Student[0]=”Pera”; Student[1]=”Petar”; Student[2]=”Perić”; Student[3]=”100/99”;

Metoda je funkcija pridružena objektu. Programer definiše metod na isti način kao što definiše funkciju. Potom tu funkciju pridružuje objektu na sledeći način:

NazivObjekta.NazivMetode = NazivFunkcije

gde je NazivObjekta postojeći objekat, NazivMetode je naziv koji dodeljujemo metodi, a NazivFunkcije je naziv funkcije koju povezujemo sa objektom. Potom možemo pozivati metodu u kontekstu objekta kao:

NazivObjekta.NazivMetode(parametri);

JavaScript ima specijalnu rezervisanu reč, this, koja se koristi za referenciranje na trenutni objekt.

Na primer, ako imamo funkciju Proveri() koja proverava da li se vrednost osobine objekta nalazi u propisanim granicama:

function Poveri(obj, donja, gornja){ if((obj.value < donja)||(obj.value > gornja)) alert(“Pogrešna vrednost”) }

Objekat Math

JavaScript obezbeđuje mnoštvo matematičkih mogućnosti. Sve ove mogućnosti sadržane su u matematičkom objektu math. Ovaj objekt se razlikuje od drugih po tome što se za njegovu upotrebu ne pravi njegova kopija. Skriptovi direktno pozivaju svojstva i metode objekta math i on je deo reference.

round() - metod zaokružuje broj na najbliži integer.

Sintaksa

Math.round(x)

random() - metod vraća nasumice izabran broj između 0 i 1.

Sintaksa

Math.random()

max() metod vraća broj sa najvećom vrednošću od dva specifičbna broja. Sintaksa

Math.max(x,y)

min() - metod vraća broj sa najmanjom vrednosti izmađu dva specifična broja.

Sintaksa

Math.min(x,y)

Function

Java Script Function je deo koda koji izvršava neki poseban zadatak i izvršava se kad se desi neki događaj, kada je funkcija pozvana od strane Java Script koda ili automatski (self-invoked funkcija). Sintaksa za kreiranje funkcije Sintaksa za kreiranje funkcije je:

function imefunkcije(var1,var2,...,varX) { Neki kod }

Var1,var2,..,varX su promenljive ili vrednosti prosleđene funkciji.

Zagrade { } definiše početak i kraj funkcije.

Funkcije bez parametara moraju imati zagrade { } posle naziva imena funkcije. Ime funkcije je praćeno (). Ime funkcije može da sadrži slova, brojeve, donju crtu i znaka za dolar ($). Ne treba zaboraviti značaj velikih slova u JavaScript-u. Reč function mora biti napisana malim slovima, u suprotnom će se desiti greška. Takođe, kada se poziva funkcija njeno ime mora biti navedeno identično kao kada se ona definiše.

Naredba return se koristi kada je potrebno odrediti vrednost koju funkcija vraća, i sve funkcije koje vraćaju neku vrednost moraju imati return naredbu.

function proizvod(a,b) { return a*b }

Prethodna funkcija vraća proizvod dva broja. Da bi se pozvala navedena funkcija moraju se proslediti i dva parametra:

product=proizvod(4,5)

Rezltujuća vrednost ove prod() funkcije je 20, i ona će biti smeštena u promenljivu nazvanu product.

Značaj definisanja funkcija se ogleda u tome što funkciju definišemo samo jednom, a možemo je koristiti koliko hoćemo puta (reusable code). Isti kod, sa različitim argumentima će proizvesti različit rezultat.

U Java Scriptu možemo da koristimo funkcije na isti način kao što koristimo varijable.

Npr. var tekst = “Proizvod brojeva 3 i 4 je : “ + proizvod(3,4);

results matching ""

    No results matching ""